1.题目描述
链接:https://www.nowcoder.com/questionTerminal/1277c681251b4372bdef344468e4f26e
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。
数值为0或者字符串不是一个合法的数值则返回0。
2.思路分析
- 设置一个flag来控制最后整数的正负
- 循环时注意第一个值,如果是 ‘-’ ,则从第二个开始遍历
- 值在字符0到字符9之间的进行操作,否则返回0
3代码实现
class Solution {
public:
int StrToInt(string str) {
// ret最终返回值
int ret = 0;
// flag 控制正负
int flag = 1;
// 字符串长度
int temp = str.size();
if(temp < 1)
return 0;
// 第一个字符是'-',则flag = -1
if(str[0] == '-')
{
flag = -flag;
}
// 如果第一个字符是‘-’,则从第二个字符开始遍历
int i = (str[0] == '-' || str[0] == '+') ? 1 : 0;
for(i; i < temp; i++)
{
// 字符是数字直接操作,否则返回0
if(str[i] >= '0' && str[i] <= '9')
ret = ret * 10 + (str[i] -'0');
else
return 0;
}
// 这里返回ret*flag
return ret * flag;
}
};