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;
    }
}
posted @ 2021-02-22 19:51  withwind777  阅读(43)  评论(0)    收藏  举报