将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
解题思路
- 简单判断
- 字符串中包含字符、数字、空格。首先应该去掉前导、后导空格。
上代码(C++香)
int StrToInt(string str) {
int length = str.length();
if(length <= 0)
return 0;
long long ans = 0;
int flag = 1;
// 首先应该排除空格(允许前面后面有空格)
int m = 0;
while (m < length && str[m] == ' ')
++m;
int k = length - 1;
while (k >= 0 && str[k] == ' ')
--k;
for(int i = m; i <= k; i++){
if(!(str[i] >= '0' && str[i] <= '9')){
if(i == m && str[i] == '+')
flag = 1;
else if(i == m && str[i] == '-')
flag = -1;
else
return 0;
continue;
}
// 此处应该加一个判断数值是否越界int
ans = ans * 10 + (str[i] - '0');
//cout<<"ans = "<<ans<<endl;
}
return flag * ans;
}