关于反转整数

在leetcode上就见了这题:

经典的反转整数,遇见过很多次了,本以为很简单,分分钟码出来,结果却大失所望,哎,看来以后还是得多想想特殊情况呀~~

不多说,先把坑挖出来,一共两个坑:

1.反转后可能溢出,此时应该返回0;

2.关于尾数为0时,应舍去;

由于采用数学方法获取各位数,并非用文本反转,所以坑2就不用考虑了,

关键是坑1,如何判别溢出呢?可以通过获取INT_MAX和INT_MIN来辅助,由于是乘法溢出,故采用将最值除上相应值,这样避免判断最值情况。

一切尽在代码中:

class Solution {
public:
	int reverse(int x) {
		int t = 0;
		while (x != 0)
		{
			if (t >INT_MAX / 10 || t <(INT_MIN) / 10)
				return 0;
			t= t * 10 + x % 10;
			x /= 10;
		}

		return t;
	}
};

 

转载于:https://www.cnblogs.com/Rainlee007/p/5873304.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值