Ruby 为啥 Ruby 的 Integer 类不实现一个 bit_count

xerox51 · April 17, 2025 · Last by xerox51 replied at April 18, 2025 · 166 hits

在 leetcode 刷题许久,发现 Python 有一个时间复杂度近似 O(1) 的 bit_count() 方法,为啥 Ruby 在第三版实现了 bit_length 方法,却不实现一个 bit_count 方法呢?有没有大佬知道原因,每次这么写 num.to_s(2).count("1"),都快吐了。

https://bugs.ruby-lang.org/issues/20163 看到有人讨论过

更早以前的一个 https://bugs.ruby-lang.org/issues/8748 被 Matz 拒绝了 认为没有必要

Reply to jiting

谢谢告知,原来 10 多年前就有人提了

遇到重复代码的第一个反应应该是消除重复

class Integer
  def bit_count
    n = self.abs
    count = 0
    while n != 0
      n &= (n - 1) 
      count += 1
    end
    count
  end
end
You need to Sign in before reply, if you don't have an account, please Sign up first.