(字符串) leetcode

Posted bella2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(字符串) leetcode相关的知识,希望对你有一定的参考价值。

技术图片

技术图片

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

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的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode-字符串转整数

[Leetcode Weekly Contest]272

leetcode: 字符串

LeetCode Word Ladder II

LeetCode 680. 验证回文字符串 Ⅱ

leetcode-791. 自定义字符串排序