剑指offer---把字符串转换为整数

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为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 
}
发布了102 篇原创文章 · 获赞 21 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/guanripeng/article/details/104684058