Leetcode PHP题解--D57 762. Prime Number of Set Bits in Binary Representation

╰+攻爆jí腚メ 2022-01-20 11:01 230阅读 0赞

D57 762. Prime Number of Set Bits in Binary Representation

题目链接

762. Prime Number of Set Bits in Binary Representation

题目分析

对给定范围内的每个整数,返回其二进制形式下,数字1出现的次数为质数的次数。

例如11111,1出现了5次,5是质数。
再如10111,1出现了4次,4不是质数。

思路

由于题目固定了范围为1~10^6,10^6次方为1千万。小于2^24。即最多只会出现24次1。

由于小于24的质数个数有限,我们直接写死24以内的质数。

对每一个数字,计算1出现的次数。再判断出现次数是否在这个质数数组内。

存在则符合题目要求的数字,否则不计入该数字。

最终代码

  1. <?php
  2. class Solution {
  3. /**
  4. * @param Integer $L
  5. * @param Integer $R
  6. * @return Integer
  7. */
  8. function countPrimeSetBits($L, $R) {
  9. $primes = [2,3,5,7,11,13,17,19,23];
  10. $nums = range($L,$R);
  11. $primeOnes = 0;
  12. foreach($nums as $num){
  13. $ones = array_filter(str_split(decbin($num)), function($val){
  14. return $val == '1';
  15. });
  16. if(in_array(count($ones),$primes)){
  17. $primeOnes++;
  18. }
  19. }
  20. return $primeOnes;
  21. }
  22. }
  23. 复制代码

若觉得本文章对你有用,欢迎用爱发电资助。

发表评论

表情:
评论列表 (有 0 条评论,230人围观)

还没有评论,来说两句吧...

相关阅读