题目
写一个函数StrToInt,实现把字符串转换成整数的功能。
要求不能使用atoi或其他类似的库函数。
解题思路
1)考虑特殊情况:空指针、空字符串、正负号、溢出等
边界:-231~231-1,边界情况可以引入c++中极值的头文件limit.h
有专门的int型的最大值INT_MAX和最小值INT_MIN
- 考虑非0~9之间的字符,返回0
代码
class Solution{
public:
int strToint(string str)
{
long long result = 0;
int sign = 0;
//1,字符串为空
if(str.size() == 0)
{
return result;
}
//判断首字母是否为‘+’或'-'
if(str[0] == '+')
{
sign = 1;
}
else if(str[0] == '-')
{
sign = -1;
}
int digit = 1;
for(int i = str.size()-1;i>0;i--)
{
if(str[i]>='0' && str[i]<='9')
{
result = result + (str[i] - '0')* digit;
digit = digit * 10;
}
else // 除0~9之外的非法输入
{
return 0;
}
}
if(str[0] == '+' || str[0] == '-')
{
result = sign * result;
}
else
{
result = result + (str[0] - '0')*digit;
}
if(result > INT_MAX || result < INT_MIN)
{
result = 0;
}
return result;
}
};
网友评论