Leetcode8 String to Integer(atoi)

这道题挺经典的,不算难,但是没做过或者好久没做了还是容易忘记方法,另外还涉及了检查上溢下溢的内容:

class Solution {
    public int myAtoi(String str) {
        if (str==null||str.trim().length()<1) return 0;
        char[] schar = str.toCharArray();
        int sign=1,index=0,result=0;
        
        //drop whitespace elements
        while(' '==schar[index]) {
            index++;
        }
        //sign
        if(schar[index]=='-'||schar[index]=='+') {
            sign = (schar[index]=='-')?-1:1;
            index++;
        }
        while(index<str.length()) {
            int digit=schar[index]-'0';
            if(digit<0||digit>9) {
                break;
            }
            //judge overflow
            if(result>(Integer.MAX_VALUE-digit)/10) {
                result = (sign==1)?Integer.MAX_VALUE:Integer.MIN_VALUE;
                break;
            }
            result = result*10+digit;
            index++;
        }
        return result*sign;
    }
}

17ms,100%.

其中,边界条件str.trim()挺重要的,不然对于testcase “  ”就会无法解决。

猜你喜欢

转载自www.cnblogs.com/chason95/p/9974710.html
今日推荐