前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Leetcode 8 String to Integer (atoi)

Leetcode 8 String to Integer (atoi)

作者头像
triplebee
发布2018-01-12 15:09:36
5910
发布2018-01-12 15:09:36
举报

Implement atoi to convert a string to an integer.

Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.

Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.

Update (2015-02-10): The signature of the C++ function had been updated. If you still see your function signature accepts a const char * argument, please click the reload button  to reset your code definition.

挺简单又挺难的一道题,就是坑太多,已经不是丧心病狂能形容了,估计这也是算法竞赛和这种面试题之间的区别吧。

好吧,我承认我WA了10发,坑点请看代码注释。

代码语言:javascript
复制
class Solution {
public:
    int myAtoi(string str) {
        if(str.length()==0) // 1.空串
            return 0;
        int flag=0,first=0;
        while(str[first]==' ')// 2.前置空格去除
            first++;
        if(str[first]=='-') //3.负号
        {
            flag=1;
            first++;
        }
        else if(str[first]=='+')//4.还尼玛能出现正号,正负号只在开头出现一次的是合法的
            first++;
        if(str[first]<'0' || str[first]>'9') //5.除了正负号和数字还可能有其他字符,判为0
            return 0;
        long long ans=0;
        int cnt=0;
        for(int i=first;i<str.length();i++)
        {
            cnt++;
            if(cnt>17) //6.位数过大溢出longlong,更不用说int了
            {
                if(flag)
                    return INT_MIN;
                else
                    return INT_MAX;
            }
            if(str[i]<'0' || str[i]>'9') //7.中途出现其他字符要中断,但前面的数字依旧视为合法的
                break;
            ans*=(long long)10;
            ans+=(long long)(str[i]-'0');
        }
        if(flag)
            ans=-ans;
        if(ans>INT_MAX)//8.int溢出处理
            return INT_MAX;
        if(ans<INT_MIN)
            return INT_MIN;
        return (int)ans;
    }
};
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-08-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档