cpp:
class Solution {
public:
int myAtoi(string str) {
if(str.length() == 0)
{
return 0;
}
int i = 0;
while(str[i] == ' ')
{
++i;
}
int sign = 1;
if(str[i] == '-')
{
sign = -1;
++i;
}
else if(str[i] == '+')
{
++i;
}
long long res = 0;
while(str[i] != '\0')
{
if(str[i] >= '0' && str[i] <= '9')
{
res = res * 10 + (str[i] - '0');
if(res > INT_MAX)
{
return sign == -1 ? INT_MIN : INT_MAX;
}
}
else
{
break;
}
++i;
}
return sign * res;
}
};
python:
import math
class Solution(object):
def myAtoi(self, str):
"""
:type str: str
:rtype: int
"""
rstr=''
a=math.pow(2,31)
str=str.lstrip()
if len(str)==0:
return 0
else:
if str[0]=='+' or str[0]=='-':
if str[0]=='+':
str=str[1:]
else:
rstr+='-'
str=str[1:]
if len(str)==0 or str[0] not in '0123456789':
return 0
else:
for i in str:
if i in '0123456789':
rstr+=i
else:
break
if int(rstr)>=a:
return int(a)-1
elif -int(rstr)>=a:
return -int(a)
else:
return int(rstr)
各种细节。先去掉左边的空格,然后判断第一个字符是不是正负号。考虑‘+’,‘+1’‘++1’等的结果。c++里面用i来串联前后。while去空格。