uacs2024

导航

leetcode 8. 字符串转换整数 (atoi)

8. 字符串转换整数 (atoi)

丑陋的代码

class Solution {
public:
    int myAtoi(string s) {
        int i = 0,size = s.size();
        bool isPositive = true;
        long res = 0;
        while(s[i] == ' ')  ++i;//跳过空格
        if(s[i] == '-'){
            isPositive = false;++i;
        }
        else if(s[i] == '+')  ++i;
        while(s[i] == '0')  ++i;//跳过空余的前置0
        for(;i < size;++i){
            if(!(s[i] >= '0' && s[i] <= '9'))  break;
            res = res * 10 + (s[i] - '0');//这样能够及时发现是否超出范围。如果从低位开始加就不好判断,比如6000000000000000000000
            if(isPositive && res >= INT_MAX)  return INT_MAX;
            if(!isPositive && res - 1 >= INT_MAX)  return INT_MIN;
        }
        if(!isPositive)  res = -res;
        return res;
    }
};

 

posted on 2024-12-20 15:58  ᶜʸᵃⁿ  阅读(11)  评论(0)    收藏  举报