码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode8 字符串转换整数

时间:2019-10-27 01:28:16      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:bsp   lse   return   判断   优先   type   flag   ==   解决   

<cctype> isdigit(char)

 

问题:在做乘法,加法前,先判断是否溢出

&&优先级大于==

 

然后教训:

考虑情况不周。比如3.14这样

然后解决办法

多自己搞几组测试

+1

1

-1

...

 

class Solution {
public:
    int myAtoi(string str) {
        long long ret=0;
        long long cmp1=((long long)1<<31)-1;
        long long cmp2=-cmp1-1;
        int i=0;
        int flag=0;
        while(i!=str.length())
        {
            if(str[i]== ){
                i++;}
            else if(str[i]!=-&&!isdigit(str[i])&&str[i]!=+){
                return 0;}
            else
            {
                if(isdigit(str[i]))
                    flag=1;
                else if(i<str.length()-1&&isdigit(str[i+1]))
                    flag=str[i]==+?1:-1;
                else
                    return 0;
                if(!isdigit(str[i]))
                    i++;
                while(i<str.length()&&isdigit(str[i]))
                    {
                        ret=ret*10+(str[i]-0);
                        if(ret>=cmp1&&(flag==1))
                            return cmp1;
                        else if(ret>cmp1)
                            return cmp2;
                        i++;
                    }
                    return flag==1?ret:-ret;
            }         
        }
                return 0;
    }
};

 

leetcode8 字符串转换整数

标签:bsp   lse   return   判断   优先   type   flag   ==   解决   

原文地址:https://www.cnblogs.com/lqerio/p/11746203.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!