蛋疼啊,看着很easy的题好多边界条件,提交了好多次。只能说明自己思路不严谨吧。
需要注意的主要有:
1 判断正负号。
2 只输入了一个非数字符号。
3 输入类似“+12a12” => 返回12才对。
4 输入类似“123 123” =>返回123才对。
5 跟上题一样,需要考虑int表示的最大值。这个值还是记住吧,2的31次方。正数的话再减个1
JS代码如下:
var myAtoi = function(str) {
//去掉空格
var s = str.replace(/(^\s*)|(\s*$)/g, "");
if(s.length === 0 ) return 0;
var flag = 1;
var result = "";
//输入了一个无效字符
if(!(parseInt(s[0])>=0 && parseInt(s[0])<=9 ) && s.length===1 ) return 0;
//判断第一位
if(s[0] === "+") {flag = 1;}
else if(s[0] === "-") { flag =-1;}
else if(parseInt(s[0])>=0 && parseInt(s[0])<=9 ){ result = s[0];}
else { return 0 ;}
for(var i = 1 ;i< s.length;i++){
if(parseInt(s[i])>=0 && parseInt(s[i])<=9) result = result+s[i];
else break;
}
if(result.length < 1) return 0;
var final = parseInt(result);
if(final*flag > 2147483647) return 2147483647;
if(final*flag < -2147483648) return -2147483648;
return final*flag;
};