题目:实现类似atoi函数。
本题主要考虑各种测试条件。
代码如下:
class Solution {
public:
int StrToInt(string str) {
if(str=="")
return 0;
int i=0;
bool neg=false;
if(str[0]=='-')
{
neg=true;
i++;
}
else if(str[0]=='+')
{
i++;
}
int sum=0;
for(; i < str.size(); i++)
{
if((str[i] >= '0') && (str[i] <= '9'))
sum =10 * sum + (str[i] - '0');
else
return 0;
}
return ((neg==true) ? 0-sum:sum);
}
};
但此题我并未考虑溢出,看书上得:
for(; i < str.size(); i++)
{
int flag = neg ? -1 : 1;
if((str[i] >= '0') && (str[i] <= '9'))
{
sum =10 * sum + flag * (str[i] - '0');
if((!neg && sum > 0x7FFFFFFF) || (neg && sum < (signed int)0x80000000))
{
sum = 0;
break;
}
}
else
return 0;
}