题目描述
解答
本题的处理就是分情况处理一下,不同的case,处理上有点差别。没有什么特别之处,主要是对语法要熟悉。
class Solution {
public:
int myAtoi(string str) {
int i=0;
while(' ' == str[i]) ++i;// 去掉空格
long flag=1;
if('+' == str[i])
{
flag=1;
return fun(str, ++i, flag);
}
else if('-'==str[i])
{
flag=-1;
return fun(str, ++i, flag);
}
else if(str[i]-'0'>=0 && str[i]-'0'<=9)
{
flag=1;
return fun(str, i, flag);
}
else
{
return 0;
}
}
int fun(string str, int i, const long flag) //计算对应的数字字符串转化为数字的结果
{
long res=0;
while(str[i]-'0'>=0 && str[i]-'0'<= 9)
{
res= res*10 +(str[i++]-'0');
if(res*flag > pow(2,31)-1) return INT_MAX;
if(res*flag < -pow(2,31))return INT_MIN;
}
res= res*flag;
return int(res);
}
};