

先确定有效字符串的起点和终点,然后再依据有无符号、正负号来处理字符串。由于存在溢出的问题,可以用long long来装结果,一旦发现不在int的范围内就直接返回。
int myAtoi(string str) {
int start=0,i=0;
long long val=0;
if(str.empty())
return 0;
//先找起点
while(i<str.size() && str[i]==' ')
++i;
start=i;
//找终点
if(str[i]=='+' || str[i]=='-' || isdigit(str[i])){
++i;
while(i<str.size() && isdigit(str[i]))
++i;
}
else
return 0;
if(str[start]=='-'){
++start;
for(;start<i;++start){
val = val*10-(str[start]-'0');
if(val<=INT_MIN)
return INT_MIN;
}
return val;
}
else if(str[start]=='+'){
++start;
for(;start<i;++start){
val = val*10+(str[start]-'0');
if(val>=INT_MAX)
return INT_MAX;
}
return val;
}
else{
for(;start<i;++start){
val = val*10+(str[start]-'0');
if(val>=INT_MAX)
return INT_MAX;
}
return val;
}
}
博客介绍了处理字符串的方法,先确定有效字符串的起点和终点,再根据有无符号、正负号进行处理。针对溢出问题,使用long long类型存储结果,若超出int范围则直接返回。
739

被折叠的 条评论
为什么被折叠?



