这道题又是一道暴力求解题。懒得说解题过程了。
不涉及算法的题做着真没意思。
class Solution {
public:
inline int isNum(char c) {
if (c >= '0' && c <= '9') {
return 1;
}
return 0;
}
int myAtoi(string str) {
int l = str.length();
int flag = 1;//负数为-1
int flag2 = 0;//已经有数值为1
long long result = 0;
string s = str;
for (int i = 0; i < l; i++) {
if (flag2 == 1 && !isNum(s[i])) { //当已经有数值且本位不是数字
break;
}
if (isNum(s[i])) { //如果当前位是数值
flag2 = 1;
result = result * 10 + (s[i] - '0') * flag;
if (flag == 1 && result > INT_MAX) {
result = INT_MAX;
break;
}
if (flag == -1 && result < INT_MIN) {
result = INT_MIN;
break;
}
continue;
}
if (flag2 == 0) { //如果当前没有数值
if (s[i] == ' ') continue; //当前为空格
if (i + 1 < l && isNum(s[i+1])) {
if (s[i] == '+') continue;
if (s[i] == '-') {
flag = -1;
continue;
}
}
break;
}
}
return int(result);
}
};