- 题目:将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
- idea:首先判断首尾字符,首先根据首位字符决定符号位。。然后从左到右遍历字符串,如果字符不合法直接返回0,否则ans = ans*10+str[i]-‘0’。假如前边都是0会被ans = ans*10+str[i]-'0’依然不变。
- code
class Solution {
public:
static bool isLegal(char c){
if (c<'0' || c>'9') return false;
return true;
}
int StrToInt(string str) {
int len = str.size();
if (len == 0) return 0;
int i = 0;
int syb = 1, ans = 0;
if (str[0] == '-'){
i++;
syb = -1;
}
if (str[0] == '+'){
i++;
}
for (; i < len; i++){
if (!isLegal(str[i])) return 0;
ans = ans*10 + str[i] - '0';
}
return syb * ans;
}
};