即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

LeetCode 8. String to Integer (atoi)(字符串)

编程语言 jjhfen00 48℃ 0评论
本文目录
[隐藏]

1.LeetCode 8. String to Integer (atoi)(字符串)

Tags:


– Math


– String

1.1.问题描述

Implement atoi to convert a string to an integer.

Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.

Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.

1.2.解题思路

这题要实现atoi,将字符串转换成数字。


有很多细节需要注意。


包括: 空格、正负号、正负号重复出现、溢出。

1.3.参考代码

#include 
#include 
#include 
using namespace std;

class Solution {
public:
    int myAtoi(string str) {
        int result = 0;
        int sign = 1;
        const int n = str.length();
        int i = 0;

        while (str[i] == ' ' && i < n) ++i;     // 处理空格

        if (str[i] == '+')           // 处理正负号
            ++i;
        else if (str[i] == '-')
        {
            sign = -1;
            ++i;
        }

        for (; i < n; ++i)
        {
            if (str[i] < '0' || str[i] > '9')       // 处理非法字符
                break;
            if (result > INT_MAX / 10|| (result == INT_MAX / 10 && (str[i] - '0') > INT_MAX % 10))      // 处理溢出
                return sign == -1 ? INT_MIN : INT_MAX;
            result = result * 10 + str[i] - '0';
        }
        return sign * result;
    }
};

int main()
{
    string s1("2147483648");
    Solution sl = Solution();
    cout << sl.myAtoi(s1) << endl;

    system("pause");
    return 0;
}

转载请注明:CodingBlog » LeetCode 8. String to Integer (atoi)(字符串)

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情