力扣8-字符串转换整数(atoi)-C++

一、运行结果

 

二、题目

题目较长,具体内容见:

力扣icon-default.png?t=M276https://leetcode-cn.com/problems/string-to-integer-atoi/

三、思路

按从前往后处理字符串顺序,首先去掉前导空格符;

之后遇到的第一个非空格字符,如果是符号位的话就存储在flag中;

接下来处理连续的数字位,(前导0做同样的处理,不影响结果),直到当前当前位字符非数字为止。如果还没处理完字符串 结果就超出了int类型的表示范围,则返回结果并终止运行。

四、代码

class Solution {
public:
    int myAtoi(string s) {
        int len = s.size();
        double ans = 0;
        int i = 0;
        while(s[i] == ' ') i++;  //去掉前导空格符
        char flag = '+';
        if(s[i] == '-' || s[i] == '+'){   //符号位
            flag = s[i];
            i++;
        }
        while(s[i]>='0' && s[i]<='9'){  //逐位处理数字
            ans = ans * 10 + (s[i] - '0');
            if(flag == '+' && ans > INT_MAX) return INT_MAX;  //超出int范围则返回并终止
            if(flag == '-' && -ans < INT_MIN) return INT_MIN;
            i++;
        }
        if(flag == '-'){
            if(-ans <= INT_MIN) return INT_MIN;
            else return -(int)ans;
        }else{
            if(ans > INT_MAX) return INT_MAX;
            else return (int)ans;
        }
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值