https://leetcode-cn.com/problems/string-to-integer-atoi/
模拟题,思路就按照下面的代码就行,不再赘述。
执行用时:8 ms, 在所有 C++ 提交中击败了34.17%的用户
内存消耗:6.8 MB, 在所有 C++ 提交中击败了94.29%的用户
class Solution {
public:
int is_number(char ch){
if(ch>='0' && ch<='9')
return true;
return false;
}
int myAtoi(string s) {
const int MIN = -2147483648;
const int MAX = 2147483647;
int len=s.length();
int idx=0;
while(idx<len && s[idx] == ' '){
idx++;
}
if(idx == len)
return 0;
int negative = 1;
if(s[idx] == '-'){
negative=-1;
}
if(s[idx] == '+' || s[idx] == '-'){
idx++;
}
if(idx == len)
return 0;
long long res=0;
bool out_range=false;
for(int j=idx;j<len && is_number(s[j]);j++){
res = res*10+(s[j]-'0');
if(res>MAX){
out_range=true;
break;
}
}
if(negative==-1){
if(out_range)
return MIN;
else
return res*negative;
}
else{
if(out_range)
return MAX;
else
return res;
}
}
};