LeetCode 8. String to Integer (atoi) c++

实现将字符串转换成整数的功能。

1.str[i] - '0' 将对应位置的字符转换成整数

2.str[i] >= '0' && str[i] <= '9' 判断是否整数

3.进入每一个步骤首先判断是否越界

4.完成该步判断后,i++保证循环继续进行

具体步骤:

1.首先跳过前面所有空格

2.判断是否有符号的标识,有符号的标识就保存起来

3.进入计数步骤(如果发现有字符,直接跳出),在计数之前,先判断下一步是否会溢出,判断的方法为

if( base > INT_MAX / 10 || (base == INT_MAX / 10  && str[i] - '0' > 7 ) ) 

 

class Solution {
public:
    int myAtoi(string str) {
        if(str.empty()) return 0;
        int base = 0, i = 0, sign = 1, n = str.size();
        while(i < n && str[i] == ' ') i++;
        if(i < n && (str[i] == '+' || str[i] == '-'))
            sign = (str[i++] == '+') ? 1 : -1;
        while(i < n && str[i] >='0' && str[i] <='9'){
            if(base > INT_MAX / 10 ||(base == INT_MAX / 10 && str[i] - '0' > 7))
                return (sign == 1)? INT_MAX : INT_MIN;
            base = base * 10 + (str[i++] - '0');
        }
        return sign * base;
    }
};

参考:https://www.cnblogs.com/grandyang/p/4125537.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值