跳转至

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)\)

1
2
3
class Solution:
    def isSameAfterReversals(self, num: int) -> bool:
        return num == 0 or num % 10 != 0
1
2
3
4
5
class Solution {
    public boolean isSameAfterReversals(int num) {
        return num == 0 || num % 10 != 0;
    }
}
1
2
3
4
5
6
class Solution {
public:
    bool isSameAfterReversals(int num) {
        return num == 0 || num % 10 != 0;
    }
};
1
2
3
func isSameAfterReversals(num int) bool {
    return num == 0 || num%10 != 0
}
1
2
3
function isSameAfterReversals(num: number): boolean {
    return num === 0 || num % 10 !== 0;
}
1
2
3
4
5
impl Solution {
    pub fn is_same_after_reversals(num: i32) -> bool {
        num == 0 || num % 10 != 0
    }
}
1
2
3
4
5
6
7
/**
 * @param {number} num
 * @return {boolean}
 */
var isSameAfterReversals = function (num) {
    return num === 0 || num % 10 !== 0;
};

评论