这道题的坑是真的多,艰难的改了好几遍才符合要求
记录一下几个坑:
1.非数字字符除了字母外还有'.'之类的,要考虑到
2.会存在“+-2”这样的案例,应该返回0的
3.会存在“ +0 123”这样的案例,应该返回0的
4.会出现“0-1”这样的例子,应该返回0
问题链接:https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/5/strings/37/
代码:
public int myAtoi(String str) {
int res=0;
int flag=1;
int yes=0;
char[] s = str.toCharArray();
for(int i=0; i<s.length;i++){
if(yes==0) {
if(s[i]==' '){
continue;
}
if (s[i] == '-') {
flag = -1;
yes=1;
continue;
} else if (s[i] == '+') {
flag = 1;
yes=1;
continue;
}
}
if(!(s[i]>='0'&&s[i]<='9')){
break;
}
int temp=(s[i]-'0')*flag;
if(res>Integer.MAX_VALUE/10||res == Integer.MAX_VALUE/10 && temp>7){
return Integer.MAX_VALUE;
}
if(res<Integer.MIN_VALUE/10 || res == Integer.MIN_VALUE/10 && temp<-8){
return Integer.MIN_VALUE;
}
res=res*10+temp;
yes=1;
}
return res;
}