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

xerox51 · 2025年04月17日 · 最后由 xerox51 回复于 2025年04月18日 · 166 次阅读

在 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 拒绝了 认为没有必要

jiting 回复

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

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

class Integer
  def bit_count
    n = self.abs
    count = 0
    while n != 0
      n &= (n - 1) 
      count += 1
    end
    count
  end
end
需要 登录 后方可回复, 如果你还没有账号请 注册新账号