前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode刷题(10)【简单】反转整数(C++)

LeetCode刷题(10)【简单】反转整数(C++)

作者头像
半生瓜的blog
发布2023-05-12 21:36:25
1640
发布2023-05-12 21:36:25
举报
文章被收录于专栏:半生瓜のblog半生瓜のblog

题目链接——反转整数

在这里插入图片描述
在这里插入图片描述

代码示例:

代码语言:javascript
复制
class Solution {
public:
    int reverse(int x)
    {
        int ret =0;
       while(x)
       {
       //有符号整数溢出
       
       //如果这个数比最小的数去掉一位要小,或者比最大的数去掉一位要大
       //那么将他*10后得到的最后结果肯定是要大(小),肯定溢出了。
       //并且要先在*10之前判断,否则就溢出了
          	if (ret > INT_MAX / 10 || ret < INT_MIN / 10)
			{
				return 0;
			}
           ret = ret*10+x%10;        
           x /=10;
       }
        return ret;
    }
};

题解:

代码语言:javascript
复制
		INT_MAX和INT_MIN为C++内宏定义,分别表示int的最大值和最小值。

  		定义ret为反转后的数,初始化为0
          x%10取到最后一位上的数
          x/10去掉最后一位上的数
	
	相关解释:

		开始的ret为0
		x %10将原来x的最后一位取出来,放到ret中,这个数就是ret最终结果的第一位。
		现在的ret是这个一位数,
		
		将它*10,变成几十,ret变成两位数,刚才取出来的这个数到了十位上,个位上是0,
		个位就被空了出来,
		之前的x已经被去掉了最后一位,现在的x最后一位为原来x的倒数第二位,x %10,取到新的最后一位,
		加到ret中,得到新的ret
		重复上述步骤:
		...
		

		例: x = 123
		ret =  0 * 10 + 123 % 10 = 3 
		x = 12
		
		ret = 3 * 10 + 12 % 10 = 30 + 2 = 32
		x = 1
	
		得到结果
		ret = 32 * 10 + 1 % 10  = 321
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档