LeetCode 20200318(字符串转换整数)

1.字符串转换整数
注意:还是要注意 像昨天的问题一样 对于整数的按位加和 必须将res定义成 long(long int)否则就会报错

还有就是设置一个符号位 判断是正负
还有 分情况讨论首位非空字符和后面的(非首位)字符
首位为正负号,以及为数字的
非首位的,为数字则加,非则停止

class Solution {
public:
    int myAtoi(string str) {
        int len=str.size();
        int flag=0;
        long int res=0;
        for(int i=0;i<len;i++){
            if(flag==0){
                if(str[i]==' '){continue;}
                else if(str[i]=='+'){flag=1;}
                else if(str[i]=='-'){flag=-1;}
                else if(str[i]>='0'&& str[i]<='9'){
                    flag=1;
                    res=str[i]-'0';
                }
                else {return 0;}
            }
            else{
                if(str[i]>='0'&& str[i]<='9'){
                    res=10*res+str[i]-'0';
                if(res*flag>INT_MAX){return INT_MAX;}
                if(res*flag<INT_MIN){return INT_MIN;}}
                else {return flag*res;}
            }
        }
        return flag*res;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值