题目链接
分析
自己实现atoi函数的功能,将字符串转为数字。
需要注意的case:
前面有空格
Input:
” 010”
Expected:
10
中间有字母
Input:
” -0012a42”
Expected:
-12
超出int范围时:
Input:
“2147483648”
Expected:
2147483647
代码
class Solution {
public:
int myAtoi(string str) {
if(str.size()==0){
return 0;
}
int flag=1, i=0;
for(i=0; i<str.size(); i++){
if(str[i]=='-' || str[i]=='+'){
if(str[i]=='-'){
flag *= -1;
}
i++;
break;
}else if(isdigit(str[i])){
break;
}else if(str[i]!=" "){
return 0;
}
}
long total=0;
for(; i<str.size(); i++){
if(!isdigit(str[i])){
break;
}
total = total*10 + str[i]-'0';
if(total > INT_MAX){ //对溢出情况的处理
if(flag == 1){
return INT_MAX;
}else{
return INT_MIN;
}
}
}
return total*flag;
}
};