leetcode 字符串转换整数 (模拟)

本文详细解析了如何使用C++实现字符串到整数的转换,通过具体代码示例,探讨了处理空格、正负号、数字字符以及越界情况的方法。深入理解这一过程对于掌握基本的数据类型转换及异常处理具有重要意义。

在这里插入图片描述

思路分析

1.跟着题意模拟,分成几种情况来看待
2.一种全是空格
3.有可能有空格,然后有符号的
4.有可能有空格,无符号数字
5.有可能有空格,非数字开头
6.最后还需要考虑一个越界的问题,所以要除以10来判断

代码:

class Solution {
public:
    int myAtoi(string str) {
        int i=0,sum=0;
        int flag=1;
        while(str[i]==' '&&str[i]!='\0')
        {
            i++;
        }
        if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')||str[i]=='\0')
        return 0;
        if(str[i]=='-')
        {
             flag=-1;
             i++;
        }else if(str[i]=='+')
        {
            i++;
        }
        while(str[i]>='0'&&str[i]<='9'&&str[i]!='\0')
        {
             if (sum > INT_MAX / 10 || (sum == INT_MAX / 10 && (str[i] - '0') > INT_MAX % 10)) {
                return INT_MAX;
            }
            if (sum < INT_MIN / 10 || (sum == INT_MIN / 10 && (str[i] - '0') > -(INT_MIN % 10))){
                return INT_MIN;
            }

            sum=sum*10+flag*(str[i]-'0');
            i++;
        }
        return sum;
        
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值