题目描述
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
思路
- 最简单的想法是将数字转换成字符串再比较;
- 再想一想,是否可以将数字翻转然后再比较呢?
- 这种情况可能会出现 7. 整数反转类似的溢出
- 那我们是否可以只翻转一半数字呢?
- 感觉可以,那怎样处理一共只有奇数位的情况呢?
- 想一想判断条件
- 在位数为偶数时,假设数字一共
2x
位,如果翻转一半,则会分成两个x
位的数字a
和b
,其中b
是由小变大的数字。我们可以设置a!=b
,在b>a
时这个数字一定不是回文数; - 在位数为奇数时,假设数字一共
2x+1
位,在翻转一半前会有一个x+1
位的a
和x
位的b
,那下一次一定是b>a
,在此时我们可以判断a/10
是否和b
相等。
- 在位数为偶数时,假设数字一共
- 总的来说,我们只需要
- 每次判断 b 和 a 是否相等;
b>a
时判断b/10
和a
是否相等。
最终代码:
想得太多
注意一些边界条件。