1.题目
Implement atoi to convert a string to an integer.
将一个字符串转换为整型。
2.思路
atoi是面试官经常会问到的题目,主要是要考虑各种情形,那么一般的atoi有哪些要求呢?
1. 对于输入字符串str,前面的空格忽略不计,从第一个非空字符串开始计数,第一个非空字符串只能是数字或者'+' '-'号。
2.'+' 和'-'号后面只能接数字,并且单独出现的符号不符合要求;
3.在数字之后如果出现非数字字符,那么读取的数字到此为止。例如:" -123 31" 应该返回-123;
4.如果字符串读取的字符越界的话,返回相应的INT_MAX或者INT_MIN;
class Solution {
public:
int myAtoi(string str) {
int sign=1,i=0;
long long ans = 0;
if(str.size() == 0) return 0;
while(str[i] == ' ') i++;
if(str[i] == '-') {sign = -1;i++;}
else if(str[i] == '+') {i++;}
while(str[i] != '\0'){
if(isdigit(str[i])){
ans = ans*10 + str[i]-'0';
i++;
if(ans*sign > INT_MAX){return INT_MAX;}
else if(ans*sign < INT_MIN){return INT_MIN;}
}
else{
return (int)ans*sign;
}
}
return (int)ans*sign;
}
};