题目:
实现atoi
解答:
此题是细致题,需要考虑到各种情况,比如去除空前缀,去除0前缀,处理非0-9字符,处理小数点等
class Solution {
public:
/**
* @param str: A string
* @return An integer
*/
int atoi(string str) {
// write your code here
int tag = 1;
int len = str.length();
int startPos = 0;
while (str[startPos] == '0' || str[startPos] == ' ') {
startPos++;
}
if (str[startPos] == '-') {
tag = -1;
startPos++;
}
else if (str[startPos] == '+') {
startPos++;
}
long long LONG = 2147483648;
long long int temp = 0;
while (startPos <= len) {
if (tag == 1 && temp >= INT_MAX) {
return INT_MAX;
}
else if (tag == -1 && temp >= LONG) {
return INT_MIN;
}
else if (str[startPos] == '.') { //由于是转换为int 遇到小数点就可以直接结束了,小数点后面的额是没有意义的
return temp * tag;
}
else if (startPos < str.length() && !(str[startPos] >= '0' && str[startPos] <= '9'))
return temp == 0 ? 0 : tag * temp;
else if (startPos < str.length()) {
temp = temp * 10 + (str[startPos] - '0');
}
startPos++;
}
return tag * temp;
}
};