Implement atoi to convert a string to an integer.
Hint: Carefully consider all possible input cases.
Notes: It is intended for this problem to be specified vaguely (i.e., no given input specs). You are responsible to gather all the input requirements up front.
class Solution {
public:
string trim(string str, int *len){
int j = 0, i = 0;
int first = 0;
while(str[i] != '\0'){
if(str[i] != ' ' && !first){
str[j++] = str[i];
}
if(j > 0 && str[i] == ' '){
break;
}
i++;
}
*len = j;
return str;
}
int myAtoi(string str) {
int len = str.length();
if(len == 0){
return 0;
}
string temp = trim(str, &len);
temp[len] = '\0';
int sign = 1;
if(temp[0] == '+'){
sign = 1;
}else if(temp[0] == '-'){
sign = -1;
}
int i;
if(temp[0] == '+' || temp[0] == '-'){
i = 1;
}else{
i = 0;
}
long long int result = 0;
while(i < len){
if(temp[i] == ' ' || temp[i] - '0' < 0 || temp[i] - '0' > 9){
return result * sign;
}
result = result * 10 + (temp[i] - '0');
if(result * sign > INT_MAX){
return INT_MAX;
}
if(result * sign < INT_MIN){
return INT_MIN;
}
i++;
}
return (int)result * sign;
}
};
0 comments:
Post a Comment