思路
1.去掉字符開(kāi)頭的空格和符號(hào)
2.計(jì)算數(shù)字
3.越界判斷
代碼
int myAtoi(char* str) {
int str_len = strlen(str);
int i, flag = 0;//開(kāi)始標(biāo)識(shí)
int result = 0, cur = 0;
char c;
for (i = 0; i < str_len; i++) {
//判斷識(shí)別開(kā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');//生成數(shù)字
}
else if (c == ' ' && !flag){
continue;
}
else {
break;
}
//數(shù)字越界判斷
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;
}