判断一个整数是否为回文数
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
要求
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
原题链接:回文数
完全判断
正常思路来说需要将这个整数 x 翻转后判断是否相等
比如 12345,翻转后是 54321,判断不相等,不是回文数;
又比如 12321,翻转后同样是 12321,判断相等,是回文数
判断一半
但这为了减少操作的次数,可以只判断一半
比如偶数情况:123345,反转到 543(一半)时判断 543 和 123 不相等,不是回文数
奇数情况:12321,反转到一半是 123,另一半是 12,则 123/10==12
,是回文数;或者说反转到一半是 12,另一半是 123,则12==123/10
,是回文数
代码实现
实现思路(用变量 y 来记录反转后的数)
- 比如说 x=12321
- 第一轮:x%10=1 ; x/10=1232 ;
- 此时
x=1232
;y 应为 1,即0*10+1
- 此时
- 第二轮:x%10=2,x/10=123
- 此时
x=123
;y 应为 12,即1*10+2
- 此时
- 第三轮:x%10=3,x/10=12
- 此时
x=12
;y 应为 123,即12*10+3
- 此时
- 这时候已经反转了一半了,此时 x=12,y=123,那么判断不再反转的条件应该是 x<y
1 | class Solution { |
本文采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ShiGuang
评论