返回介绍

solution / 1000-1099 / 1009.Complement of Base 10 Integer / README

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

1009. 十进制整数的反码

English Version

题目描述

每个非负整数 N 都有其二进制表示。例如, 5 可以被表示为二进制 "101"11 可以用二进制 "1011" 表示,依此类推。注意,除 N = 0 外,任何二进制表示中都不含前导零。

二进制的反码表示是将每个 1 改为 0 且每个 0 变为 1。例如,二进制数 "101" 的二进制反码为 "010"

给你一个十进制数 N,请你返回其二进制表示的反码所对应的十进制整数。

 

    示例 1:

    输入:5
    输出:2
    解释:5 的二进制表示为 "101",其二进制反码为 "010",也就是十进制中的 2 。
    

    示例 2:

    输入:7
    输出:0
    解释:7 的二进制表示为 "111",其二进制反码为 "000",也就是十进制中的 0 。
    

    示例 3:

    输入:10
    输出:5
    解释:10 的二进制表示为 "1010",其二进制反码为 "0101",也就是十进制中的 5 。
    

     

    提示:

    1. 0 <= N < 10^9
    2. 本题与 476:https://leetcode.cn/problems/number-complement/ 相同

    解法

    方法一

    class Solution:
      def bitwiseComplement(self, n: int) -> int:
        if n == 0:
          return 1
        ans = 0
        find = False
        for i in range(30, -1, -1):
          b = n & (1 << i)
          if not find and b == 0:
            continue
          find = True
          if b == 0:
            ans |= 1 << i
        return ans
    
    class Solution {
      public int bitwiseComplement(int n) {
        if (n == 0) {
          return 1;
        }
        int ans = 0;
        boolean find = false;
        for (int i = 30; i >= 0; --i) {
          int b = n & (1 << i);
          if (!find && b == 0) {
            continue;
          }
          find = true;
          if (b == 0) {
            ans |= (1 << i);
          }
        }
        return ans;
      }
    }
    
    class Solution {
    public:
      int bitwiseComplement(int n) {
        if (n == 0) return 1;
        int ans = 0;
        bool find = false;
        for (int i = 30; i >= 0; --i) {
          int b = n & (1 << i);
          if (!find && b == 0) continue;
          find = true;
          if (b == 0) ans |= (1 << i);
        }
        return ans;
      }
    };
    
    func bitwiseComplement(n int) int {
      if n == 0 {
        return 1
      }
      ans := 0
      find := false
      for i := 30; i >= 0; i-- {
        b := n & (1 << i)
        if !find && b == 0 {
          continue
        }
        find = true
        if b == 0 {
          ans |= (1 << i)
        }
      }
      return ans
    }
    

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

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

    发布评论

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