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.
Update (2015-02-10):
The signature of the C++
function had been updated. If you still see your function signature accepts a const char *
argument, please click the reload button to reset your code definition.
题意
将字符串转变为整型数,实现atoi的功能。注意输入的各种情况。
题解
这题没什么难度,就是需要注意几种情况
1、空格符开头的要过滤
2、+、-号开头
3、中间出现非数字字符要中断
4、注意int数的最大最小区间
class Solution {
public:
int myAtoi(string str) {
if(str.size()==0)
return 0;
int flag=1;
unsigned int res=0;
int i=0;
while(str[i]==' '&&i<str.size())
i++;
if(str[i]=='-')
{
flag=-1;
i++;
}
else if(str[i]=='+')
i++;
for(;i<str.size();i++)
{
if(str[i]>='0'&&str[i]<='9')
{
int cur=str[i]-'0';
if(res>INT_MAX/10||
(res==INT_MAX/10 && cur>INT_MAX%10) )
return flag==-1 ? INT_MIN : INT_MAX;
res=res*10+cur;
}
else break;
}
return res*flag;
}
};