美文网首页Leetcode题解-PHP版
Leetcode PHP题解--D57 762. Prime N

Leetcode PHP题解--D57 762. Prime N

作者: skys215 | 来源:发表于2019-05-10 08:59 被阅读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~106,106次方为1千万。小于2^24。即最多只会出现24次1。

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

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

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

最终代码

<?php
class Solution {

    /**
     * @param Integer $L
     * @param Integer $R
     * @return Integer
     */
    function countPrimeSetBits($L, $R) {
        $primes = [2,3,5,7,11,13,17,19,23];
        $nums = range($L,$R);
        $primeOnes = 0;
        foreach($nums as $num){
            $ones = array_filter(str_split(decbin($num)), function($val){
                return $val == '1';
            });
            if(in_array(count($ones),$primes)){
                $primeOnes++; 
            }
        }
        
        return $primeOnes;
    }
}

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

相关文章

网友评论

    本文标题:Leetcode PHP题解--D57 762. Prime N

    本文链接:https://www.haomeiwen.com/subject/qmcooqtx.html