返回介绍

solution / 2400-2499 / 2443.Sum of Number and Its Reverse / README

发布于 2024-06-17 01:03:06 字数 3500 浏览 0 评论 0 收藏 0

2443. 反转之后的数字和

English Version

题目描述

给你一个 非负 整数 num 。如果存在某个 非负 整数 k 满足 k + reverse(k) = num  ,则返回 true ;否则,返回_ _false

reverse(k) 表示 k 反转每个数位后得到的数字。

 

示例 1:

输入:num = 443
输出:true
解释:172 + 271 = 443 ,所以返回 true 。

示例 2:

输入:num = 63
输出:false
解释:63 不能表示为非负整数及其反转后数字之和,返回 false 。

示例 3:

输入:num = 181
输出:true
解释:140 + 041 = 181 ,所以返回 true 。注意,反转后的数字可能包含前导零。

 

提示:

  • 0 <= num <= 105

解法

方法一:暴力枚举

在 $[0,.., num]$ 范围内枚举 $k$,判断 $k + reverse(k)$ 是否等于 $num$ 即可。

时间复杂度 $O(n \times \log n)。其中 $n$ 为 $num$ 的大小。

class Solution:
  def sumOfNumberAndReverse(self, num: int) -> bool:
    return any(k + int(str(k)[::-1]) == num for k in range(num + 1))
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;
  }
};
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
  }
}
bool sumOfNumberAndReverse(int num) {
  for (int i = 0; i <= num; i++) {
    int t = i;
    int j = 0;
    while (t > 0) {
      j = j * 10 + t % 10;
      t /= 10;
    }
    if (i + j == num) {
      return 1;
    }
  }
  return 0;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文