题目
本题链接:把字符串转换成整数
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输出描述:
示例1:
示例2:
代码思路:
如果是空字符串,直接返回0;遍历字符,如果字符中有非数字字符,也直接返回0。我们都先用正数处理,如果第一个字符是’-’,最后返回-1*sum。若第一个字符是是符号字符(’-’、’+’),我们把这个位置置为字符’0’,这样不会影响最终结果,并且遍历的时候不会因为这个位置不是数字字符而退出。
转换为整数:sum = sum * 10 + str[i] - ‘0’;
例如:"123"的转换结果是
sum = 0
sum = sum * 10 + str[i] - ‘0’ = 0 * 10 + ‘1’ - ‘0’ = 1
sum = 1 * 10 + ‘2’ - ‘0’ = 12
sum = 12 * 10 + ‘3’ - ‘0’ = 123
代码:
class Solution {
public:
int StrToInt(string str) {
if(str.empty())//如果是空字符串,返回0
return 0;
int flag = 1;
int sum = 0;
if(str[0] == '-')
{
flag = -1;
str[0] = '0';
}
else if(str[0] == '+')
{
str[0] = '0';
}
for(int i = 0; i < str.size(); i++)
{
if(str[i] < '0' || str[i] > '9')
{
sum = 0;
break;
}
sum = sum * 10 + str[i] - '0';
}
return flag*sum;
}
};