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

(字符串) leetcode

时间:2019-07-25 23:13:49      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:div   边界条件   技术   判断   算数   结束   ==   code   思路   

技术图片

技术图片

思路:判断各种边界条件。

1)首先过滤字符串前面的空格,即找到第一个不为空格的字符;
2)如果第一个字符是+或-,设置flag值;
3)接下来的字符如果在‘0‘ - ‘9‘ 范围内,则转换为数字,否则结束循环; 注意上一步中,如果结果已经大于INT_MAX或小于INT_MIN,则直接返回INT_MAX或INT_MIN;
4)如果过滤掉空格后的字符不是一个有效的整数字符,则返回0;
5)整数之后可能有多余的其他字符,可以忽略不计。
class Solution {
public:
    int myAtoi(string str) {
        int s = str.size();
        if(s==0)
            return 0;
        int i=0, flag=1, cur;   //用i遍历,flag存储正负号
        long ans = 0;    //计算数字的值,因为可能超出int边界,故定义为long
        while(i<s && str[i] ==  )
            //过滤前面的空格
            i++;
        
        if(str[i]==- || str[i] == +){
            //处理 + 和 -
            if(str[i] == -)
                flag = -1;
            i++;
        }
        
        while(i<s && str[i]>=0 && str[i]<=9){
            cur = str[i] - 0;
            ans = ans*10 + cur;
            if(ans * flag < INT_MIN)
                return INT_MIN;
            if(ans * flag > INT_MAX)
                return INT_MAX;
            i++;
        }
        return ans*flag;
    }
};

 

(字符串) leetcode

标签:div   边界条件   技术   判断   算数   结束   ==   code   思路   

原文地址:https://www.cnblogs.com/Bella2017/p/11247458.html

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