编写一个方法,数出从0到n中数字2出现了几次?
编写一个方法,数出从0到n中数字2出现了几次?
BearCatYN 发表于3年前
编写一个方法,数出从0到n中数字2出现了几次?
  • 发表于 3年前
  • 阅读 113
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 编写一个方法,数出从0到n中数字2出现了几次?

编写一个方法,数出从0到n中数字2出现了几次?
例如:如果n为20,那么0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 中共2共出现了3次。


答案1:

echo substr_count( implode('', range(0, $n)), '2' );

答案2:

function countTwo($start, $end){
$c = 0;
for($i=$start; $i<=$end; $i++){
$c += substr_count($i, '2');
}
return $c;
}
echo( countTwo(0, 20) );

答案3:

function countNumber($n, $digit) {
$power = 1; //10为底的幂,代表当前计数的位
$count = 0;
while($power <= $n) {
$r = $n % (10 * $power); //$r 为 $n 不断十进制右移移除的数字组合的数值
$m = ($n-$r)/(10 * $power);//$m 为 $n 不断十进制右移后的值
$currentDigit = intval($r / $power);
if($currentDigit < $digit) {
$count += $m * $power;
} elseif($currentDigit > $digit) {
$count += ($m + 1) * $power;
} else {
$count += ($m + 1) * ($r % $power + 1);
}
$power *= 10;
}
return $count;
}


共有 人打赏支持
粉丝 28
博文 157
码字总数 11947
×
BearCatYN
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: