[编程题]把字符串转换成整数

把字符串转换成整数

http://www.nowcoder.com/questionTerminal/1277c681251b4372bdef344468e4f26e

判断方法有点暴力
带符号32位int类型整数为-2147483648~2147483647

public:
    int StrToInt(string str) {
        if (str.size() < 1) {
            return 0;
        }
        bool positive = str[0] == '-' ? false : true;
        long res = 0;
        for (int i = (str[0] ==  '-' || str[0] == '+') ? 1 : 0; i < str.size(); i++) {
            // 非法字符
            if (str[i] < '0' || str[i] > '9') {
                return 0;
            }
            // 不论正负必越界
            if (res > INT_MAX / 10) {
                return 0;
            }
            // 正数越界
            if (res == INT_MAX / 10 && str[i] > '7' && positive) {
                return 0;
            }
            // 负数越界
            if (res == INT_MAX / 10 && str[i] > '8' && !positive) {
                return 0;
            }
            res = res * 10 + (str[i] - '0');
        } 
        return positive ? res : -res;
    }
};
全部评论

相关推荐

2024-12-25 16:59
已编辑
江西师范大学科学技术学院 HRBP
沐雨千秋:难,这实习一眼兼职暑假工
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务