1.题目
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
2.我的题解
- 先判断是否为空;
- 判断符号;
- 向后找数字,如果遇到非数字那么不合法;
class Solution {
int state=0;//0:correct 1:NULL 2:outbound 3:illegal
public:
int StrToInt(string str) {
//1:NULL
if(str.empty()){
state=1;
return 0;
}
//res
long long res=0;
//sign
int i=0,sign=1;
if(str[i]=='+')i++;
else if(str[i]=='-'){
sign=-1;
i++;
}
//3:illegal
if(i==str.size()){
state=3;
return 0;
}
//calc number
for(;i<str.size();i++){
if(str[i]>'9'||str[i]<'0'){
state=3;
return 0;
}
res=res*10+sign*(str[i]-'0');
}
//2:outbound
if(res>INT_MAX || res<INT_MIN){
state=2;
return 0;
}
return res;
}
};