Skip to content

2119. A Number After a Double Reversal

Description

Reversing an integer means to reverse all its digits.

  • For example, reversing 2021 gives 1202. Reversing 12300 gives 321 as the leading zeros are not retained.

Given an integer num, reverse num to get reversed1, then reverse reversed1 to get reversed2. Return true if reversed2 equals num. Otherwise return false.

 

Example 1:

Input: num = 526
Output: true
Explanation: Reverse num to get 625, then reverse 625 to get 526, which equals num.

Example 2:

Input: num = 1800
Output: false
Explanation: Reverse num to get 81, then reverse 81 to get 18, which does not equal num.

Example 3:

Input: num = 0
Output: true
Explanation: Reverse num to get 0, then reverse 0 to get 0, which equals num.

 

Constraints:

  • 0 <= num <= 106

Solutions

Solution 1: Mathematics

Thinking

Reversing an integer drops leading zeros, so a second reverse returns the original number iff the first reverse did not drop trailing zeros. Performing both reversals works, but the digit rule is immediate.

Zero stays zero. Otherwise the first reverse loses trailing zeros iff \(num\) is divisible by \(10\), i.e., its last digit is \(0\).

Hence the answer is true iff \(num=0\) or \(num\bmod 10\neq 0\).

If the number is \(0\), or the last digit of the number is not \(0\), then the number after reversing twice will be the same as the original number.

The time complexity is \(O(1)\), and the space complexity is \(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;
};

Comments