Leetcode-String to Integer (atoi)

问题

Implement atoi to convert a string to an integer.
将一个字符串转化为整数

问题看似简单,实际上有许多需要注意的细节。
要点:

  • 对特殊字符进行处理:空格字符,放在前面的0字符
  • 只有在数字0-9内的字符才能转化为整数,否则全部返回0
  • 正负号的问题:默认为正数,直接读取符号判断是否为正数还是负数
  • 边界的问题:去掉正负数之后,与INT_MAX(2^31-1=2147483647)的值进行对比,越界则直接返回INT_MAX或者INT_MIN(关于溢出的问题,可以参考博客:https://www.sigmainfy.com/blog/2s-complement-int-max-int-min-difference.html
class Solution {
public:
    int myAtoi(string str) {
        int base=0,sign=1,i=0;
        while(str[i]==' ')i++;
        if(str[i]=='-'||str[i]=='+')
            sign=1-2*(str[i++]=='-');
        while(str[i] >= '0' && str[i] <= '9')
        {
            if(base>INT_MAX/10 || (base==INT_MAX/10 && str[i]-'0'>7))
            {
               if(sign==1)return INT_MAX;
               else return INT_MIN;
            }
            base=base*10+(str[i++]-'0');

        }
        return base*sign;

    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值