[leetcode]String to Integer (atoi)

最近都在赶学校的实验所以有一段时间没有更新了。

今天的leetcode做的是一道easy题。虽然是easy,但是之中的过程真是苦不堪言,总结了一下,有那么几个陷阱:

1.数字前面有空格 如s=“ 123456”

2.数字前出现了不必要或多于的字符导致数字认证错误,输出0,如s=“ b1234” ,s=“ ++1233” , s=“ +-1121”

3.数字中出现了不必要的字符,返回字符前的数字 如s=“ 12a12” , s=“ 123 123”

4.数字越界 超过了范围(-2147483648–2147483647) 若超过了负数的 输出-2147483648 超过了正数的输出2147483647

public class Solution {
    public int myAtoi(String str) {
        int max = Integer.MAX_VALUE;
        int min = -Integer.MIN_VALUE;
        long result = 0;
        str = str.trim();
        int len = str.length();
        if (len < 1) return 0;
        boolean negflag = false;

        int index = 0;
        if (str.charAt(index) == '-' || str.charAt(index) == '+') {
            if (str.charAt(index) == '-')
                negflag = true;
            index++;
        }

        for (int i = index; i < len; i++) {
            char ch = str.charAt(i);
            if (ch < '0' || ch > '9') break;
            result = result * 10 + (ch - '0');
            if (!negflag && result > max)
                return max;
            if (negflag && -result < min)
                return min;
        }
        if (negflag)
            result = -result;
        return (int) result;
    }
}

题目链接:https://leetcode.com/problems/string-to-integer-atoi/

你可能感兴趣的:(LeetCode)