leetcode 8. String to Integer (atoi)
题目链接
https://leetcode-cn.com/problems/string-to-integer-atoi/
截取字符然后乘10操作即可,坑点在于溢出判断,可以用MAX_INT/10与该数比较。
自己写的代码比较蠢,有漏洞,但数据可能比较水所以过了。官方题解是自动机,学会了再来写。。
class Solution {
public int myAtoi(String s) {
int flag = 1;
int index=0;
for (int i = 0; i < s.length(); i++) {
char c=s.charAt(i);
if (c==' ')
continue;
else if (c=='+'){
flag=1;
index=i+1;
break;
}
else if (c=='-'){
flag=-1;
index=i+1;
break;
}
else if (c>='0'&&c<='9'){
flag=1;
index=i;
break;
}
else
return 0;
}
int res=0;
int MAX_VALUE=Integer.MAX_VALUE;
for (int i = index; i < s.length(); i++) {
char c=s.charAt(i);
if (c>'9'||c<'0'){
if (i==index)
return 0;
break;
}
int cur=c-'0'+0;
if ((MAX_VALUE-cur)/10<res){
return flag>0?MAX_VALUE:(-1*MAX_VALUE-1);
}
res=res*10+cur;
}
return res*flag;
}
}

浙公网安备 33010602011771号