题目:
Implement atoi to convert a string to an integer.
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
1. 将字符串开头的空格删去
2. 整数可能是正或者负
3. 注意结果可能越界,如果大于最大值2147483647则最后返回最大值,如果小于最小值-2147483648则最后返回最小值。
4. leetcode的case中没有考虑输入空指针,非数字的情况(题目没有表明异常输入该返回什么)
class Solution {
public:
int atoi(const char *str) {
long long result = 0;
bool ifPositive = true;
while(*str==' '){
str++;
}
if(*str=='+'||*str=='-'){
ifPositive = *str=='+'? true: false;
str++;
}
while(*str<='9' && *str>='0'){
result = result * 10 + *str - '0';
str++;
}
if(ifPositive && result > 2147483647){
result = 2147483647;
}else if(!ifPositive){
result = -result;
if(result < -2147483648){
result = -2147483648;
}
}
return result;
}
};