返回介绍

solution / 1000-1099 / 1056.Confusing Number / README_EN

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

1056. Confusing Number

中文文档

Description

A confusing number is a number that when rotated 180 degrees becomes a different number with each digit valid.

We can rotate digits of a number by 180 degrees to form new digits.

  • When 0, 1, 6, 8, and 9 are rotated 180 degrees, they become 0, 1, 9, 8, and 6 respectively.
  • When 2, 3, 4, 5, and 7 are rotated 180 degrees, they become invalid.

Note that after rotating a number, we can ignore leading zeros.

  • For example, after rotating 8000, we have 0008 which is considered as just 8.

Given an integer n, return true_ if it is a confusing number, or _false_ otherwise_.

 

Example 1:

Input: n = 6
Output: true
Explanation: We get 9 after rotating 6, 9 is a valid number, and 9 != 6.

Example 2:

Input: n = 89
Output: true
Explanation: We get 68 after rotating 89, 68 is a valid number and 68 != 89.

Example 3:

Input: n = 11
Output: false
Explanation: We get 11 after rotating 11, 11 is a valid number but the value remains the same, thus 11 is not a confusing number

 

Constraints:

  • 0 <= n <= 109

Solutions

Solution 1

class Solution:
  def confusingNumber(self, n: int) -> bool:
    x, y = n, 0
    d = [0, 1, -1, -1, -1, -1, 9, -1, 8, 6]
    while x:
      x, v = divmod(x, 10)
      if d[v] < 0:
        return False
      y = y * 10 + d[v]
    return y != n
class Solution {
  public boolean confusingNumber(int n) {
    int[] d = new int[] {0, 1, -1, -1, -1, -1, 9, -1, 8, 6};
    int x = n, y = 0;
    while (x > 0) {
      int v = x % 10;
      if (d[v] < 0) {
        return false;
      }
      y = y * 10 + d[v];
      x /= 10;
    }
    return y != n;
  }
}
class Solution {
public:
  bool confusingNumber(int n) {
    vector<int> d = {0, 1, -1, -1, -1, -1, 9, -1, 8, 6};
    int x = n, y = 0;
    while (x) {
      int v = x % 10;
      if (d[v] < 0) {
        return false;
      }
      y = y * 10 + d[v];
      x /= 10;
    }
    return y != n;
  }
};
func confusingNumber(n int) bool {
  d := []int{0, 1, -1, -1, -1, -1, 9, -1, 8, 6}
  x, y := n, 0
  for x > 0 {
    v := x % 10
    if d[v] < 0 {
      return false
    }
    y = y*10 + d[v]
    x /= 10
  }
  return y != n
}
class Solution {
  /**
   * @param Integer $n
   * @return Boolean
   */
  function confusingNumber($n) {
    $d = [0, 1, -1, -1, -1, -1, 9, -1, 8, 6];
    $x = $n;
    $y = 0;
    while ($x > 0) {
      $v = $x % 10;
      if ($d[$v] < 0) {
        return false;
      }
      $y = $y * 10 + $d[$v];
      $x = intval($x / 10);
    }
    return $y != $n;
  }
}

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

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

发布评论

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