这题貌似是实现c++ 内置的atoi
字符串--> 带符号的整数
- 去除左边所有的空格
- 处理首字符是sign的情况
- 把数字字符转化为整数 直到遇到( 1.非数字字符 2. 到头 3. 超过上限)
#include <cmath>
class Solution {
public:
int myAtoi(string str) {
int first = 0;
// remove whilespace
while(str[first] ==' '){
first++;
}
if( first >= str.size()) return 0;
// +/-
int flag = 1;
if(str[first] == '-'){
first++;
flag = 0;
}else if(str[first]=='+'){
first++;
}
long ans = 0;
int MAX = pow(2,31) -1;
int MIN = -pow(2,31);
while( first < str.size()){
if( str[first] <'0' || str[first]>'9' || ans >MAX) break;
ans = ans*10 + (str[first]-'0') ;
first++;
}
if (flag){
return ans>MAX? MAX :ans;
}else{
return -ans<MIN?MIN:-ans;
}
}
};