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) };

浙公网安备 33010602011771号