把字符转换成整数
2020-06-20 本文已影响0人
UAV
题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述
输入一个字符串,包括数字字母符号,可以为空
输出描述
如果是合法的数值表达则返回该数字,否则返回0
示例1
输入
+2147483647
1a33
输出
2147483647
0
class Solution {
public:
int StrToInt(string str) {
//字符串长度为空则返回0;
if (str.size() == 0) {
return 0;
}
//标识,用来判断字符串首字母是不是‘+’,‘-’;
int flag=0;
if (str[0] == '+') {
flag = 1;
}else if (str[0] == '-') {
flag = -1;
//如果字符串首字母为字母,则返回0;
}else if('0' > str[0] || str[0] > '9') {
return 0;
}
/*
判别起始遍历字符串位置,如果首个字母是‘+’、‘-’,从第1个字母开始遍历,
否则从第0个字母开始遍历。
*/
int start=0;
if (flag == 1 || flag == -1) {
start = 1;
}
//转换后的整形数据
int result = 0;
for (int i = start; i <str.size(); i++)
{
if ('0' <= str[i] && str[i] <= '9') {
//使用字符的ASCALL码计算。
result = result * 10 + (str[i] - '0');
}
else
{
return 0;
}
}
//如果首字母为‘+’、‘-’,计算结果*相应标识。
if (flag != 0) {
result = flag*result;
}
return result;
}
};