leetcode之String to Integer (atoi)
‘\0’是c/c++语言中的字符串结束符,在ASCII字符集中对应数字0。
java中不是。
另外字符相减是ASSIC码相减
0的ASSIC码是49
这道题是剑指offer上的第49题,模拟了整个面试的过程。一定要注意代码的鲁棒性,边界条件以及空,或者特殊值
下面附上AC代码,用java实现和书上的略不同,不过思想是一致的:
public int myAtoi(String str) {
if(str == null){
return 0;
}
str = str.trim();
if(str.length()==0){
return 0;
}
int sign = 1;
int index = 0;
if(str.charAt(index)=='+'){
index++;
}else if(str.charAt(index)=='-'){
sign = -1;
index++;
}
long num = 0;
for(;index<str.length();index++){
if(str.charAt(index)<'0'||str.charAt(index)>'9')
break;
num = num*10 + (str.charAt(index)-'0');
if (num > Integer.MAX_VALUE ) {
break;
}
}
if (num * sign >= Integer.MAX_VALUE) {
return Integer.MAX_VALUE;
}
if (num * sign <= Integer.MIN_VALUE) {
return Integer.MIN_VALUE;
}
return (int)num * sign;
}

浙公网安备 33010602011771号