在 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 拒绝了 认为没有必要
谢谢告知,原来 10 多年前就有人提了
遇到重复代码的第一个反应应该是消除重复
class Integer def bit_count n = self.abs count = 0 while n != 0 n &= (n - 1) count += 1 end count end end
哈哈