目录
-
把字符串转换成整数(剑指欧肥儿)
题目描述:将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
输入描述:输入一个字符串,包括数字字母符号,可以为空
输出描述:如果是合法的数值表达则返回该数字,否则返回0
示例一:
输入:
+2147483647 1a33
输出:
2147483647 0
解题代码一:
class Solution {
public:
int StrToInt(string str) {
//变量
int num = 0;
int i = 0;
int flag = true;
int x;
//排除字符串前面的气泡
while(str[i] == ' '){
i++;
}
//确定正负号
if(str[i] == '+'){
flag = true;
i++;
}else if(str[i] == '-'){
flag = false;
i++;
}
//开始生成数字,检查不是数字的字符
while(str[i] != '\0'){
x = flag ? 1 : -1;
if(str[i] >= '0' && str[i] <= '9'){
num = num * 10 + x * (str[i] - '0');
i++;
}else{
num = 0;
break;
}
}
return num;
}
};
解题思路:
- 排除字符串最前面的空字符' '
- 确定正负号
- 将字符串生成数字,如果含有非数字的字符,则直接返回0,方法用的是 num = num * 10 + x * (str[i] - '