leetcode 字符串转换整数 (模拟)

在这里插入图片描述

思路分析

1.跟着题意模拟,分成几种情况来看待
2.一种全是空格
3.有可能有空格,然后有符号的
4.有可能有空格,无符号数字
5.有可能有空格,非数字开头
6.最后还需要考虑一个越界的问题,所以要除以10来判断

代码:

class Solution {
public:
    int myAtoi(string str) {
        int i=0,sum=0;
        int flag=1;
        while(str[i]==' '&&str[i]!='\0')
        {
            i++;
        }
        if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')||str[i]=='\0')
        return 0;
        if(str[i]=='-')
        {
             flag=-1;
             i++;
        }else if(str[i]=='+')
        {
            i++;
        }
        while(str[i]>='0'&&str[i]<='9'&&str[i]!='\0')
        {
             if (sum > INT_MAX / 10 || (sum == INT_MAX / 10 && (str[i] - '0') > INT_MAX % 10)) {
                return INT_MAX;
            }
            if (sum < INT_MIN / 10 || (sum == INT_MIN / 10 && (str[i] - '0') > -(INT_MIN % 10))){
                return INT_MIN;
            }

            sum=sum*10+flag*(str[i]-'0');
            i++;
        }
        return sum;
        
    }
};
posted @ 2020-04-03 00:49  YenKoc  阅读(225)  评论(0编辑  收藏  举报