LeetCode 8. String to Integer (atoi)

问题链接

LeetCode 8. String to Integer (atoi)

题目解析

字符串转换成数字。

解题思路

个人认为题目并没有完全讲清楚题意。最初以为需要考虑多种情况,小数啊指数啊什么的,后面发现不是这样的,这题只要关注字符数字问题以及范围问题

1.跳过空格字符;

2.判断正负号;

3.判断数字,顺便判断范围。

注意正负号和数字要连续,不能断;数字之后再出现非数字字符,直接返回,后面的字符补在理会。

参考代码

class Solution {
public:
    int myAtoi(string str) {
        if (str.empty()) return 0;
        int sign = 1, i = 0, len = str.size();
        int res = 0;
        while (i < len && str[i] == ' ') i++;
        if (str[i] == '+' || str[i] == '-')
            sign = (str[i++]=='+' ? 1 : -1);
        
        while (i < len && str[i] >= '0' && str[i] <= '9') {
            if (res > INT_MAX/10 || (res == INT_MAX/10 && str[i] >= '8'))
                return sign==1 ? INT_MAX : INT_MIN;
            res = res*10 + (str[i]-'0');
            i++;
        }
        return sign * res;
    }
};

LeetCode All in One题解汇总(持续更新中...)

本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.


posted @ 2018-03-13 10:52  AlvinZH  阅读(223)  评论(0编辑  收藏  举报