思路
1.去掉字符开头的空格和符号
2.计算数字
3.越界判断
代码
int myAtoi(char* str) {
int str_len = strlen(str);
int i, flag = 0;//开始标识
int result = 0, cur = 0;
char c;
for (i = 0; i < str_len; i++) {
//判断识别开始
c = str[i];
if (c == '+' && !flag ) {
flag = 1;
continue;
}
else if (c == '-' && !flag) {
flag = -1;
continue;
}
else if (c >= '0' && c <= '9') {
if (flag != -1) {
flag = 1;
}
cur = result * 10 + (c - '0');//生成数字
}
else if (c == ' ' && !flag){
continue;
}
else {
break;
}
//数字越界判断
if ((cur - c + '0') / 10 != result || cur < 0) {
if (flag == 1) {
return INT_MAX;
}
else if (flag == -1) {
return INT_MIN;
}
}
else {
result = cur;
}
}
if (flag == -1) {
result = 0 - result;
}
return result;
}
网友评论