1,题目要求
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
2,题目思路
对于这道题,要求将一个字符串转化为一个数字。
转换并不困难,难点在于对条件的判断。
- 空串,返回0;
- 含有字母,返回0;
- 超过int所能表示的限制,返回0;
只要把握好这三个要素,按部就班进行转换,就基本没有问题。
3,代码实现
class Solution {
public:
int StrToInt(string str) {
if(str.size() == 0)
return 0;
long long res = 0;
int sign = str[0]=='-'?-1:1;
int i = (str[0]=='+'||str[0]=='-')?1:0;
for(;i<str.size();i++){
if(str[i]<'0'||str[i]>'9')
return 0;
res = res*10 + (str[i]-'0');
if(res*sign>INT_MAX||res*sign<INT_MIN)
return 0;
}
return sign*res;
}
};