c++:
class Solution {
public:
int myAtoi(string s) {
int res = 0;
int flag = 1;
int i = 0;
while(s[i] == ' '){//判断空格
i++;
}
if(s[i] == '-'){//判断负号
flag = -1;
}
if(s[i]== '-' || s[i] == '+'){
i++;
}
while(i < s.size() && isdigit(s[i])){
//int r = s[i] - '0';//转数字
int r = int(s[i]);
if(res > INT_MAX / 10 || (res == INT_MAX /10 && r > 7)){//INT_MAX=2147483647,INT_MIN = -2147483648
return flag > 0? INT_MAX : INT_MIN;
}
res = res*10 + r;
i++;
}
return flag > 0?res : -res;
}
};
python:
INT_MAX = 2 ** 31 - 1
INT_MIN = -2 ** 31
class Solution:
def myAtoi(self, s: str) -> int:
res , flag , i = 0 , 1 , 0
n = len(s)
while i < n and s[i] == ' ':
i = i + 1
if i == n or n == 0: ## 输入全部为空格或者输入为空
return 0
if s[i] == '-':
flag = -1
if s[i] == '-' or s[i] == '+':
i = i+1
while i < len(s) and s[i].isdigit():
r = int(s[i])
res = res*10 + r
if res > INT_MAX:
return INT_MAX if flag == 1 else INT_MIN
i = i + 1
return res if flag > 0 else -res