String to Integer (atoi)

来源:互联网 发布:webpack java 编辑:程序博客网 时间:2024/04/23 23:22

溢出这里我没有找到很优雅的解决方案,目前只能是在左移之前,先判断左移后的结果是否会溢出,此时设计了一个long long型的数据来保存临时结果,这样就可以保证没有溢出。

class Solution {public:    int atoi(const char *str) {        char *p = (char *)str;        while (*p != '\0') {            if (*p == ' ' || *p == '\t' || *p == '\n') {                ++p;                continue;            }            break;        }        if (!(*p == '+' || *p == '-' || isValid(*p)))            return 0;        int sig = 1;        if (*p == '+') {            sig = 1;            ++p;        }        else if (*p == '-') {            sig = -1;            ++p;        }        int res = 0;        while (isValid(*p)) {long long test = (long long)res * 10 + (*p - '0');if (test > INT_MAX) {if (sig == 1)return INT_MAX;return INT_MIN;}res = test;++p;}        return sig * res;    }    bool isValid(char c) {        if (c >= '0' && c <= '9')            return true;        return false;    }};

http://oj.leetcode.com/problems/string-to-integer-atoi/

0 0