[LeedCode OJ]#8 String to Integer (atoi)

【 声明:版权所有,转载请标明出处,请勿用于商业用途。  联系信箱:libin493073668@sina.com】


题目链接:https://leetcode.com/problems/string-to-integer-atoi/


题意:

给定一个字符串,要求将其转化为int型


思路:

这一题的坑比较多,主要考虑以下几点

1.字符串的前缀空格需要省略

2.数字前面出现多个正负号,则判错,返回0,如“++123”,“--123”,“+-123”,“-+123”

3.连续的数字被其他符号隔开,则返回前一段数字,如“   123a321”,"   123    123",都是返回123

4.如果超出了int范围(-2147483648--2147483647),返回临界最大值,也就是说如果是负数返回-2147483648,整数则返回2147483647


class Solution
{
public:
    int myAtoi(string str)
    {
        int len = str.length();
        int i,j,flag1 = 0,flag2 = 0,num = 1,fu = 0;
        long long ans = 0;
        for(i = 0; i<len; i++)//去掉前缀空格
            if(str[i]!=' ')
                break;
        for(; i<len; i++)//统计开头符号
        {
            if(str[i]=='+') flag1++;
            else if(str[i]=='-') flag2++;
            else break;
        }
        if(flag1+flag2>1) return 0;
        for(; i<len; i++)
        {
            if(str[i]>='0' && str[i]<='9')
            {
                ans = ans*10+str[i]-'0';
                if((!flag2)&&ans>=2147483647)
                    return 2147483647;
                if(flag2&&ans>=2147483648)
                    return -2147483648;
            }
            else break;
        }
        return flag2?-ans:ans;
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值