字符串转整型数(剑指offer/leetcode)

29 篇文章 0 订阅
14 篇文章 0 订阅

实现 atoi,将字符串转为整数。

提示:仔细考虑所有输入情况。如果你想挑战自己,请不要看下面并自己考虑所有可能的输入情况。

说明:这题解释的比较模糊(即没有指定输入格式)。你得事先汇集所有的输入情况。

字符串转整型数是典型的字符串处理, 对于这道题没有什么技巧,就是一个字符一个字符进行处理,同时需要对边界条件进行有效的控制

1、循环遍历跳过数字前的空格;

2、记录第一个正负符号;

3、正负号后开始对字符串进行遍历,若遇到非0~9之间的字符就跳出循环;

4、对每一次叠加的结果进行上、下届的判断;

叠加结果我用的是long int,直接int不行。

细节见代码:

class Solution {
public:
    int myAtoi(string str) {
        if (str.size() == 0)
        {
            return 0;
        }
        int len = 0;
        len = int(str.size());
        long int result = 0;
        int i = 0;
        int temp = 0;
        int flag = 1;
        while (str[i] == ' ')
        {
            i++;
        }
        if (str[i] == '-')
        {
            flag = -1;
            i++;
        }
        else if (str[i] == '+')
        {
            flag = 1;
            i++;
        }
        while (i < len)
        {
            if (str[i] < '0' || str[i] > '9')
            {
                break;
            }
            
            temp = str[i] - '0';
            result *= 10;
            result += temp;
            if (result >= 2147483647 && flag == 1)
            {
                return 2147483647;
            }
            if (-result <= -2147483648 && flag == -1)
            {
                return -2147483648;
            }
            i++;
        }
        return result*flag;
    }
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值