题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
输入例子:
+2147483647
1a33
输出例子:
2147483647
0
思路:
写了个判断是不是数字字符串的函数。
不是数字字符串直接返回0,是数字字符串,判断首字母是不是符号,是从第二个位置开始计数。
AC代码:
class Solution {
public:
bool isNumble(string str, int n)
{
int i = ;
if (str[] == '+' || str[] == '-')
i=;
for (; i<n; i++)
{ if (str[i]<'' || str[i]>'')
return false;
}
return true;
} int StrToInt(string str) {
int n = strlen(str.c_str());
int ans = ;
if (isNumble(str,n))
{
int i=;
if (str[] == '+' || str[] == '-')
i = ;
for (; i<n; i++)
{
ans *= ;
ans += (int)(str[i] - '');
}
if (str[] == '-')
ans = - ans;
return ans;
}
else
return ;
}
};