题意
将一个字符串转换为数字
思路
注意情况即可:
- 前面有空格
- 具有多个正负号
- 具有前导零
- 具有其他字符(例如英文字母等)
- 字符串组成的数字可能会溢出,即超出 int
结果
Your runtime beats 58.71 % of cpp submissions.
代码
class Solution {
public:
int myAtoi(string str) {
int len = str.length();
string s = "";
int flag = 0;
int bz = 0;
int loc = 0;
while(str[loc] == ' ') loc++;
for(int i = loc; i < len;i++){
if(str[i] == '-'){
if(bz) return 0;
bz = -1;
continue;
} else if(str[i] == '+'){
if(bz) return 0;
bz = 1;
flag = 1;
continue;
} else if(str[i] == '0' && flag == 0){
continue;
}
flag = 1;
s += str[i];
}
if(bz == 0) bz = 1;
long long ans = 0;
int sLen = s.length();
for(int i = 0; i < sLen;i++){
if(s[i] >= '0' && s[i] <= '9'){
ans = ans * 10 + s[i] - '0';
if(ans * bz > INT_MAX)
return INT_MAX;
if(ans * bz < INT_MIN)
return INT_MIN;
} else{
break;
}
}
return ans * bz;
}
};