【剑指offer】面试题67. 把字符串转换成整数

思路

1、检查空格
2、检查符号
3、计算数字

  • 判断是否溢出,如果溢出,根据符号进行返回

4、根据符号进行返回

代码

	int res = 0;
		int i = 0;
		int flag = 1;//用来判断是正还是负,1表示正,0表示负
		//1.检查空格
		while (str[i] == ' ') i++;
		//2.检查符号
		if (str[i] == '-') flag = 0;
		if (str[i] == '-' || str[i] == '+') i++;
		//计算数字
		while (i < str.size() && isdigit(str[i]))//如果i在size范围内1,且1为数字,则进行计算
		{
			int r = str[i] - '0';
			//判断是否溢出
			if (res > INT_MAX / 10 || (res == INT_MAX / 10 && r > 7))
				//INT_MAX=2147483647
				//INT_MIN=-2147483648
				//如果res比214748364大,则res加入数字r后,一定越界
				//如果res=214748364,但是r>7,则也发生越界,如果r==8&&flag==0,则返回INT_MIN,如果大于8,也是返回INT_MIN
			{
				return flag ? INT_MAX : INT_MIN;
			}
			res = res * 10 + r;//将数字r加在res后面
			i++;
		}
		return flag ? res : -res;
发布了94 篇原创文章 · 获赞 19 · 访问量 8074

猜你喜欢

转载自blog.csdn.net/weixin_41234001/article/details/104427386
今日推荐