LeetCode:String to Integer


需要考虑一下几种特殊用例:

1 开头有空格的字符串,如“      123”

2 溢出情况,需要输出int最大或最小值,这个判断可以参照翻转数字位数那道题

3 有正负号的问题,如“+123”,“-123”

4 数字夹杂着其他字符,如“1a3”,只返回前面的数字“1”

5 正负号不止一个,返回0,如“++1”

class Solution {
public:
    int atoi(string str) {
        if(str.length()==0)
            return 0;
        else{
            int i,j,result;
            result=0;
            int flag=0;//用来标记正负号
            i=0;
            while(str[i]==' ')
            {
                i++;
            }
            for(;i<str.length();i++)
            {
               if(str[i]=='+'||str[i]=='-')
                {
                    if(flag==0)
                    {
                        if(str[i]=='+')
                            flag=1;
                        else
                            flag=-1;
                    }
                    else
                        return result;
                }
                else if(str[i]>='0'&&str[i]<='9')
                {
                    if(flag!=-1&&2147483647<(long long)result*10+str[i]-'0')//最大溢出
                        return INT_MAX;
                    else if(flag==-1&&(unsigned int)2147483648<(long long)result*10+str[i]-'0') //最小溢出
                        return  INT_MIN ;
                    else result=result*10+str[i]-'0';
                }
                else 
                  break;
            }
            if(flag==-1)
                result=-1*result;
            return result;
        }
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值