题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例:
输入:
+2147483647
1a33
输出:
2147483647
0
解题思路:该题需要注意字符串首字母为’+’,’-’,字母等,还需要注意int类型越界
int StrToInt(string str){
if(str.size() == 0){
return 0;
}
long long result = 0;
int flag = 0;//整数的符号
if(str[0] == '+'){
flag = 1;
}else if(str[0] == '-'){
flag = -1;
}else{//字符串首字母为数字或者字符
flag = 0;
}
int index = 0;//字符串的下标
if(flag == 1 || flag == -1){
index = 1;
}
for(int i = index;i < str.size();i++){
if(str[i] <= '9'&&str[i] >= '0'){
result = result * 10 + (str[i] - '0');
}else{
return 0;
}
}
if(str[0] <= '9'&&str[0] >= '0') {//字符串首字母为数字
flag = 1;
}
result = result * flag;
if(result > INT_MAX || result < INT_MIN){//判断是否int越界
return 0;
}
return (int)result;//显示转换为int
}