美文网首页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