您的位置:首页 > 其它

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

2015-08-24 11:14 435 查看
【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱: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;
    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: