其他分享
首页 > 其他分享> > 【leetcode】字符串转换整数

【leetcode】字符串转换整数

作者:互联网

请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数。
函数 myAtoi(string s) 的算法如下:

注意:
本题中的空白字符只包括空格字符 ’ ’ 。
除前导空格或数字后的其余字符串外,请勿忽略 任何其他字符。

示例 1:
输入:s = “42”
输出:42

示例 2:
输入:s = " -42"
输出:-42

示例 3:
输入:s = “4193 with words”
输出:4193

示例 4:
输入:s = “words and 987”
输出:0

示例 5:
输入:s = “-91283472332”
输出:-2147483648

提示:
0 <= s.length <= 200
s 由英文字母(大写和小写)、数字(0-9)、’ ‘、’+’、’-’ 和 ‘.’ 组成

class Solution {
    public int myAtoi(String s) {
        int length = s.length();
        char[] charArray = s.toCharArray();

        int i = 0;
        while (i < length && charArray[i] == ' ') {
            i++;
        }

        if (i == length) {
            return 0;
        }

        int sign = 1;
        if (charArray[i] == '+') {
            i++;
        } else if (charArray[i] == '-') {
            i++;
            sign = -1;
        }

        int result = 0;
        int max = Integer.MAX_VALUE / 10;
        int max_n = Integer.MAX_VALUE % 10;
        int min = Integer.MIN_VALUE / 10;
        int min_n = Integer.MIN_VALUE % 10;
        while (i < length) {
            if (charArray[i] > '9' || charArray[i] < '0') {
                break;
            }
            if (max < result || (max == result && charArray[i] - '0' > max_n)) {
                if (sign == 1) {
                    return Integer.MAX_VALUE;
                } else {
                    return Integer.MIN_VALUE;
                }
            }
            result = result * 10 + (charArray[i++] - '0');
        }
        return result * sign;
    }
}

标签:int,31,整数,charArray,result,字符串,Integer,leetcode
来源: https://blog.csdn.net/qq_31478771/article/details/114166125