题解 | #把字符串转换成整数(atoi)#

把字符串转换成整数(atoi)

http://www.nowcoder.com/practice/d11471c3bf2d40f38b66bb12785df47f

题意:
方法:
模拟:

思路:
        
        直接模拟。
        用 flag 判断正负,x 计算数的绝对值。
        最后判断边界:是否大于正数的最大值 or 小于负数的最小值。



class Solution {
public:
    
    int StrToInt(string s) {
        int len=s.size();
        long long x=0;
        int flag=0;//0表示正数,1表示负数
        int f=0;
        int num=0;
        for(int i=0;i<len;i++){
            if(f==0&&s[i]=='+'){//正号
                flag=0;
                num++;
            }else if(f==0&&s[i]=='-'){//负号
                flag=1;
                num++;
            }else if(f==0&&s[i]==' '){//空格
                continue;
            }else if(isdigit(s[i])){//数字
                if(num>1)
                    return 0;
                x=x*10+(s[i]-'0');
                f=1;
                if(x>(1ll<<31))
                    break;
            }else{
                break;
            }
        }
        if(flag==0&&x>(1ll<<31)-1){//大于正数的最大值
            return (1ll<<31)-1;
        }
        if(flag==1&&x>(1ll<<31)){//小于负数的最小值
            return 0-(1ll<<31);
        }
        if(flag==1)//负数
            return 0-x;
        return x;//正数
    }
};

时间复杂度:
空间复杂度:


全部评论

相关推荐

某四大行 移动市网络通信工程师 预计到手10左右 双非本
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务