题目:实现类似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;
}
本文介绍了一个atoi函数的实现方法,该函数能够将字符串转换为整数,并考虑了符号位及非法字符的情况。代码中详细展示了如何处理正负号、跳过非数字字符,并通过逐位乘加的方式进行数值转换。
561

被折叠的 条评论
为什么被折叠?



