当前位置: 代码迷 >> 综合 >> LC 8 String to Integer(atoi)
  详细解决方案

LC 8 String to Integer(atoi)

热度:46   发布时间:2023-10-28 04:52:49.0

思路

需要一个sign变量指示值的正负,初始化为1。首先对str进行trim操作,去除两头的空格,然后再进行正负号的判断,之后进入循环,计算字符串的值:先对上一次的结果*10,再加上当前取出来的数字。循环:首先碰到不是0~9字符的就直接结束;循环中可以进行剪枝,计算出当前sum值后,与INT_MAX和INT_MIN进行比较,如果超出范围则直接break。【注意sum需要是long类型的,防止溢出】

代码

class Solution {
    public int myAtoi(String str) {
    int sign = 1;int index = 0;str = str.trim();if(str.length() == 0)return 0;if(str.charAt(index) == '+') {
    index++;} else if(str.charAt(index) == '-') {
    sign = -1;index++;}long sum = 0;for(; index < str.length(); index++) {
    if(str.charAt(index) < '0' || str.charAt(index) > '9')break;int cur = str.charAt(index) - '0';sum *= 10;sum += cur;if(sum > Integer.MAX_VALUE)break;}sum *= sign;if(sum > Integer.MAX_VALUE)return Integer.MAX_VALUE;if(sum < Integer.MIN_VALUE)return Integer.MIN_VALUE;return (int)sum;}
}

复杂度

时间复杂度O(n), 空间复杂度O(1)

  相关解决方案