zoukankan      html  css  js  c++  java
  • 剑指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;
        }
    };
  • 相关阅读:
    React-Hooks
    RC-Select 学习笔记
    React Strict Mode
    CSSMotion VS animation in Angular
    jquery中has方法
    jquery中对于extend方法的使用
    一篇对于在jquery中使用jsonp技术介绍
    对于table元素的总结
    css3布局相关样式
    移动端去掉按钮点击热区
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/6867229.html
Copyright © 2011-2022 走看看