LeetCode 8

将字符串转化成整型数字

这道题坑真多,第一次见点灭数这么多的题哈哈哈

首先在转化的过程中记得不要超过long的范围(因为我用的是long存储

然后“+”“-”的情况 

“++1”当作0 用了hint来表示已经有正负符号

“   42”一开始有空格的情况 

“   +0 123”中间有空格的话只取前面的部分 用cal来表示已经开始计算,不能在出现非数字

class Solution {
public:
    int myAtoi(string str) {
         long sum=0;
         bool flag=false;
         bool hint=true;
         bool cal=false;
         for(int i=0;i<str.length();i++)    
         {
             if(str[i]>='0'&&str[i]<='9')
             {
                 cal=true;
                 sum*=10;
                 sum+=(str[i]-'0');
                 if(sum>INT_MAX)
                     break;
             }
             else if(str[i]=='-'&&hint&&!cal)
             {
                 flag=true;
                 hint=false;
             }
             else if(str[i]==' '&&hint&&!cal)
             {
                 continue;
             }
             else if(str[i]=='+'&&hint&&!cal)
            {
                 hint=false;
             }
             else
                 break;
         }
         if(flag)
            sum=-sum;
         if(sum<INT_MIN)
             return INT_MIN;
         else if(sum>INT_MAX)
             return INT_MAX;
         else
             return sum;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值