返回介绍

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

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

1056. 易混淆数

English Version

题目描述

给定一个数字 N,当它满足以下条件的时候返回 true

原数字旋转 180° 以后可以得到新的数字。

如 0, 1, 6, 8, 9 旋转 180° 以后,得到了新的数字 0, 1, 9, 8, 6 。

2, 3, 4, 5, 7 旋转 180° 后,得到的不是数字。

易混淆数 (confusing number) 在旋转180°以后,可以得到和原来不同的数,且新数字的每一位都是有效的。

 

示例 1:

输入:6
输出:true
解释: 
把 6 旋转 180° 以后得到 9,9 是有效数字且 9!=6 。

示例 2:

输入:89
输出:true
解释: 
把 89 旋转 180° 以后得到 68,68 是有效数字且 89!=68 。

示例 3:

输入:11
输出:false
解释:
把 11 旋转 180° 以后得到 11,11 是有效数字但是值保持不变,所以 11 不是易混淆数字。 

示例 4:

输入:25
输出:false
解释:
把 25 旋转 180° 以后得到的不是数字。

 

提示:

  1. 0 <= N <= 10^9
  2. 可以忽略掉旋转后得到的前导零,例如,如果我们旋转后得到 0008 那么该数字就是 8

解法

方法一

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 和您的相关数据。
    原文