2119. 反转两次的数字
题目描述
反转 一个整数意味着倒置它的所有位。
- 例如,反转
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$,那么反转两次后的数字一定和原数字相等。
时间复杂度 $O(1)$,空间复杂度 $O(1)$。
Python3
class Solution:
def isSameAfterReversals(self, num: int) -> bool:
return num == 0 or num % 10 != 0
Java
class Solution {
public boolean isSameAfterReversals(int num) {
return num == 0 || num % 10 != 0;
}
}
C++
class Solution {
public:
bool isSameAfterReversals(int num) {
return num == 0 || num % 10 != 0;
}
};
Go
func isSameAfterReversals(num int) bool {
return num == 0 || num%10 != 0
}
TypeScript
function isSameAfterReversals(num: number): boolean {
return num === 0 || num % 10 !== 0;
}
Rust
impl Solution {
pub fn is_same_after_reversals(num: i32) -> bool {
num == 0 || num % 10 != 0
}
}
JavaScript
/**
* @param {number} num
* @return {boolean}
*/
var isSameAfterReversals = function (num) {
return num === 0 || num % 10 !== 0;
};