首页 > 其他 > 详细

leetcode 8

时间:2016-09-01 16:02:43      阅读:77      评论:0      收藏:0      [点我收藏+]

技术分享

string类型转换为int类型,需要考虑不同的转换情况。

“   04”  转换结果   4;

“   4   43”  转换结果  4;

“a@12 ”   转换结果    0;

“12a”    转换结果    12;

“ +12”   转换结果    12;

“ +  12”  转换结果   0;

“ -12”   转换结果     -12;

“  -  12”  转换结果    0;

“ +-12”   转换结果   0;

 

其次就是对边界的考虑,若转换之后的数越上界,则返回上界;若转换之后的数越下界,则返回下界。

 

代码如下:

class Solution {
public:
    int myAtoi(string str) {
        int result = 0;
        bool sign = true;
        int tag = 0;
        for(int i = 0; i < str.length(); ++i)
        {
            if(str[i] ==    && tag == 0)
            {
                continue;
            }
            if(str[i] == + && tag == 0)
            {
                tag = 1;
                continue;
            }
            if(str[i] == - && tag == 0)
            {
                tag = 1;
                sign = false;
                continue;
            }
            while(i < str.length())
            {
                if((str[i] - 0) < 0 || (str[i] - 9) > 9)
                {
                    return sign? result : -result; 
                }
                if(result > INT_MAX / 10)
                {
                    return  sign? INT_MAX : INT_MIN;
                }
                result *= 10;
                if ((str[i] - 0) > (INT_MAX - result))  
                    return sign? INT_MAX : INT_MIN;
                result = result + str[i] - 0;
                i ++;
            }
        }
        return sign? result : -result;
    }
};

 

leetcode 8

原文:http://www.cnblogs.com/shellfishsplace/p/5830014.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!