65. Valid Number(js)
65. Valid Number
Validate if a given string can be interpreted as a decimal number.
Some examples:"0"
=> true
" 0.1 "
=> true
"abc"
=> false
"1 a"
=> false
"2e10"
=> true
" -90e3 "
=> true
" 1e"
=> false
"e3"
=> false
" 6e-1"
=> true
" 99e2.5 "
=> false
"53.5e93"
=> true
" --6 "
=> false
"-+3"
=> false
"95a54e53"
=> false
题意:给定一个字符串,是否可以转换为数字
代码如下:
/** * @param {string} s * @return {boolean} */ var isNumber = function(s) { // 法一 let len=s.length; let left=0,right=len-1; let eExisted=false; let dotExisted=false; let digitExisted=false; while(s[left]===' ') left++; while(s[right]===' ') right--; if(left>=right && (parseInt(s[left])<0 || parseInt(s[right])>9 )) return false; //判断第一个字符 if(s[left]==='.') dotExisted=true; else if(parseInt(s[left])>=0 && parseInt(s[left])<=9) digitExisted=true; else if(s[left]!=='+' && s[left]!=='-') return false; //遍历中间每个字符 for(let i=left+1;i<=right-1;i++){ if(parseInt(s[i])>=0 && parseInt(s[i])<=9) digitExisted=true; else if(s[i]==='e' || s[i]==='E'){ if(!eExisted && s[i-1]!=='+' && s[i-1]!=='-'&&digitExisted ) eExisted=true; else return false; }else if(s[i]==='+' || s[i]==='-'){ if(s[i-1]!=='e' && s[i-1]!=='E') return false; }else if(s[i]==='.'){ if(!dotExisted && !eExisted) dotExisted=true; else return false; }else return false; } if(parseInt(s[right])>=0 && parseInt(s[right])<=9) return true; else if(s[right]==='.' && !dotExisted && !eExisted && digitExisted) return true; else return false; // 法二 // return s.trim()!=='' && !isNaN(+s) };