题目:将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
边界条件:
数据上下 溢出
空字符串
只有正负号
有无正负号
错误标志输出
class Solution {
public:
int StrToInt(string str) {
int n = str.size(), s = 1;
long long res = 0;
if(!n) return 0;
if(str[0] == '-') s = -1;
for(int i = (str[0] == '-' || str[0] == '+') ? 1 : 0; i < n; ++i){
if(!('0' <= str[i] && str[i] <= '9')) return 0;
res = (res << 1) + (res << 3) + (str[i] & 0xf);
//res=res*10+str[i]-'0';
}
return res * s;
}
};
/*C++
//考虑第一个字符为‘-’、‘+’和字符串中有非数字字符的情况。*/
class Solution {
public:
int StrToInt(string str) {
int n=0,flag=0;
for(int i=0;i<str.size();++i){
if(i==0&&str[i]=='-')
flag=1;
if(i==0&&str[i]=='+')
continue;
if(str[i]>='0'&&str[i]<='9'){
n=n*10+(str[i]-'0');
}
else if(i>0)
return 0;
}
return flag?-1*n:n;
}
};