Welcome to Subscribe On Youtube
2443. Sum of Number and Its Reverse
Description
Given a non-negative integer num
, return true
if num
can be expressed as the sum of any non-negative integer and its reverse, or false
otherwise.
Example 1:
Input: num = 443 Output: true Explanation: 172 + 271 = 443 so we return true.
Example 2:
Input: num = 63 Output: false Explanation: 63 cannot be expressed as the sum of a non-negative integer and its reverse so we return false.
Example 3:
Input: num = 181 Output: true Explanation: 140 + 041 = 181 so we return true. Note that when a number is reversed, there may be leading zeros.
Constraints:
0 <= num <= 105
Solutions
Solution 1: Brute Force Enumeration
Enumerate $k$ in the range $[0,.., num]$, and check whether $k + reverse(k)$ equals $num$.
The time complexity is $O(n \times \log n)$, where $n$ is the size of $num$.
-
class Solution { public boolean sumOfNumberAndReverse(int num) { for (int x = 0; x <= num; ++x) { int k = x; int y = 0; while (k > 0) { y = y * 10 + k % 10; k /= 10; } if (x + y == num) { return true; } } return false; } }
-
class Solution { public: bool sumOfNumberAndReverse(int num) { for (int x = 0; x <= num; ++x) { int k = x; int y = 0; while (k > 0) { y = y * 10 + k % 10; k /= 10; } if (x + y == num) { return true; } } return false; } };
-
class Solution: def sumOfNumberAndReverse(self, num: int) -> bool: return any(k + int(str(k)[::-1]) == num for k in range(num + 1))
-
func sumOfNumberAndReverse(num int) bool { for x := 0; x <= num; x++ { k, y := x, 0 for k > 0 { y = y*10 + k%10 k /= 10 } if x+y == num { return true } } return false }
-
function sumOfNumberAndReverse(num: number): boolean { for (let i = 0; i <= num; i++) { if (i + Number([...(i + '')].reverse().join('')) === num) { return true; } } return false; }
-
impl Solution { pub fn sum_of_number_and_reverse(num: i32) -> bool { for i in 0..=num { if i + ({ let mut t = i; let mut j = 0; while t > 0 { j = j * 10 + (t % 10); t /= 10; } j }) == num { return true; } } false } }