• 剑指offer49 把字符串转换成整数


    这个代码会报错

    class Solution {
    public:
        enum status {kvalid = 0,kinvalid};
        int now_status = kvalid;
        int StrToInt(string str) {
            now_status = kinvalid;
            long long num = 0;
            int index = 0;
            bool minus = false;
            if(str.size() != 0 && str[index] != ''){
                if(str[index] == '+'){
                    index++;
                }
                else if(str[index] == '-'){
                    minus = true;
                    index++;
                }
                if(str[index] != ''){
                    num = StrToIntCore(str,minus,index);
                }            
            }
            return int(num);
        }
        long long StrToIntCore(string str,bool minus,int index){
            int length = str.size();
            long long num = 0;
            int flag = minus ? -1 : 1;
            for(;index < length;index++){
                if(str[index] >= '0' && str[index] <= '9'){
                    num = num*10 + flag * (str[index]-'0');if(( num < 0x80000000) || ( num > 0x7FFFFFFF)){
                        num = 0;
                        break;
                    }
                }
                else{
                    num = 0;
                    break;
                }
            }
            if(str[index] == ''){
                now_status = kvalid;
            }
            return num;
        }
    };

    修改为:

    class Solution {
    public:
        enum status {kvalid = 0,kinvalid};
        int now_status = kvalid;
        int StrToInt(string str) {
            now_status = kinvalid;
            long long num = 0;
            int index = 0;
            bool minus = false;
            if(str.size() != 0 && str[index] != ''){
                if(str[index] == '+'){
                    index++;
                }
                else if(str[index] == '-'){
                    minus = true;
                    index++;
                }
                if(str[index] != ''){
                    num = StrToIntCore(str,minus,index);
                }            
            }
            return int(num);
        }
        long long StrToIntCore(string str,bool minus,int index){
            int length = str.size();
            long long num = 0;
            int flag = minus ? -1 : 1;
            for(;index < length;index++){
                if(str[index] >= '0' && str[index] <= '9'){
                    num = num*10 + flag * (str[index]-'0');
                    int xxxx= 0x80000000;
                    if(( num < xxxx) || ( num > 0x7FFFFFFF)){
                        num = 0;
                        break;
                    }
                }
                else{
                    num = 0;
                    break;
                }
            }
            if(str[index] == ''){
                now_status = kvalid;
            }
            return num;
        }
    };

    或者修改为

    class Solution {
    public:
        enum status {kvalid = 0,kinvalid};
        int now_status = kvalid;
        int StrToInt(string str) {
            now_status = kinvalid;
            long long num = 0;
            int index = 0;
            bool minus = false;
            if(str.size() != 0 && str[index] != ''){
                if(str[index] == '+'){
                    index++;
                }
                else if(str[index] == '-'){
                    minus = true;
                    index++;
                }
                if(str[index] != ''){
                    num = StrToIntCore(str,minus,index);
                }            
            }
            return int(num);
        }
        long long StrToIntCore(string str,bool minus,int index){
            int length = str.size();
            long long num = 0;
            int flag = minus ? -1 : 1;
            for(;index < length;index++){
                if(str[index] >= '0' && str[index] <= '9'){
                    num = num*10 + flag * (str[index]-'0');
                    if(( num < (signed int)0x80000000) || ( num > 0x7FFFFFFF)){
                        num = 0;
                        break;
                    }
                }
                else{
                    num = 0;
                    break;
                }
            }
            if(str[index] == ''){
                now_status = kvalid;
            }
            return num;
        }
    };
  • 相关阅读:
    计数排序【代码】
    快速排序【代码】
    基于最大堆实现最大优先队列
    Spring入门(1)
    AJAX初步理解
    选择器
    Hibernate的映射
    Hibernate配置(2)
    查看mysql的安装路径
    Hibernate入门(1)
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/6867229.html
Copyright © 2020-2023  润新知