LeetCode-8. 字符串转换整数 (atoi)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l718531794/article/details/84534567

题目地址:https://leetcode-cn.com/problems/string-to-integer-atoi/
题意:还挺烦的一道题,将给出的字符串在特定条件下进行一个转化。
思路:考虑好特判,主要情况就是前导0的处理,溢出用长度来处理即可。这个代码12ms-20ms都跑过,所以我也不知道他到底能击败多少人。
AC代码:

class Solution {
public:
    int myAtoi(string str) {
        int length = str.length();
        int max_x = 2147483647;
        char max_str[15] = "2147483647";
        int min_x = -2147483648;
        int s = -1;
        char min_str[15] = "2147483648";
        int flag = 1;
        for(int i=0;i<length;i++){
            if(str[i]!=' '){
                s = i;
                if(str[i] == '-' || str[i] == '+'){
                    s += 1;
                    if(str[i]=='-')
                    flag = -1;
                }      
                break;
            }
        }
        int temp = s;
        for(int i = s;i<=length;i++){
            if(str[i]!='0'){
                temp = i;
                break;
            }
        }
        s = temp;
        if(str[s]<'0' || str[s]>'9' || s==-1 || s>=length)
            return 0;
        
        int e = s+1;
        for(int i = s+1;i<=length;i++){
            if(str[i]<'0' || str[i]>'9'){
                e = i;
                break;
            }
        }
        int sum = 0;
        if(e-s>10){
            if(flag==1)
                return max_x;
            else
                 return min_x;
            
               
        }
        if(e-s==10){
            for(int i=s,p=0;i<e;i++,p++){
                if(flag==1){
                    if(str[i]>max_str[p])
                        return max_x;
                    if(str[i]<max_str[p])
                        break;
                }else{
                    if(str[i]>min_str[p]){
                        return min_x;
                    }     
                     if(str[i]<min_str[p])
                        break;
                }
            }
        }
        for(int i = s;i<e;i++){
            sum = sum*10+flag*(str[i]-'0');
        }
        return sum;
    }
};

猜你喜欢

转载自blog.csdn.net/l718531794/article/details/84534567
今日推荐