题目
反转 一个整数意味着倒置它的所有位。
- 例如,反转
2021
得到1202
。反转12300
得到321
,不保留前导零 。
给你一个整数 num
,反转 num
得到 reversed1
,接着反转 reversed1
得到 reversed2
。如果 reversed2
等于 num
,返回 true
;否则,返回 false
。
示例 1:
输入:num = 526 输出:true 解释:反转 num 得到 625 ,接着反转 625 得到 526 ,等于 num 。
示例 2:
输入:num = 1800 输出:false 解释:反转 num 得到 81 ,接着反转 81 得到 18 ,不等于 num 。
示例 3:
输入:num = 0 输出:true 解释:反转 num 得到 0 ,接着反转 0 得到 0 ,等于 num 。
提示:
0 <= num <= 106
方法 :数学
分析
一个数字进行两次反转操作不变的充要条件是:在两次反转操作前后数字的位数不变
那么要想位数不变,我们根据例子知道,结尾不能够有0,如果有0,在反转的过程中会省去;
那这个结尾不能有0就等价于对10取余不等于0,这是其中的一个条件;
根据 提示 1 以及取值范围,我们需要找出两次反转操作前后数字位数均不变的(正)整数。
对于 0,进行两次反转操作后仍然为 0。那么另一个条件就是如果这个数为0直接就返回true;
这就分成了两种去讨论,一个是为0,一个是正整数;
代码
class Solution {
public boolean isSameAfterReversals(int num) {
return num == 0 || num % 10 != 0;
}
}