题目描述
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
直接看代码:
class Solution {
public:
//对每个字符 转为整形数值, 不是数字时返回-1
int char_to_int(char c){
return c >= '0' && c <= '9' ? c - '0' : -1;
}
int StrToInt(string str) {
if(0 == str.length()){
return 0;
}
int sign = 1; //符号标志
int val = 0; //数字结果
//先处理第一个字符 为+时 sign为1
if(str[0] == '+'){
sign = 1;
}
//第一个字符为负号时,sing为-1
else if(str[0] == '-'){
sign = -1;
}
//不是正负号 则转为数字
else{
val = char_to_int(str[0]);
if(-1 == val){ //不是数字 则返回0
return 0;
}
}
//处理剩下的字符
for(int i = 1; i < str.length(); i++){
int tmp = char_to_int(str[i]);
if(-1 == tmp){ //不是数字 则返回0
return 0;
}
val = val * 10 + tmp;
}
return sign * val;
}
};