加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
NumberOf1Between1AndN.php 724 Bytes
一键复制 编辑 原始数据 按行查看 历史
star 提交于 2018-10-11 10:36 . 31-整数中1出现的次数
<?php
/**
* 整数中1出现的次数(从1到n整数中1出现的次数)
* 例如 1、10、11、12、13因此共出现6次,
*/
function NumberOf1Between1AndN_Solution($n)
{
if ($n < 1) {
return 0;
}
$len = getLenNum($n);
if ($len == 1) {
return 1;
}
$tem = pow(10, $len -1);
$first = intval($n / $tem); // 第一位数
$firstOneNum = $first == 1 ? $n % $tem + 1: $tem; //·
$otherOneNum = $first * ($len - 1) * (intval($tem / 10));
return $firstOneNum + $otherOneNum + NumberOf1Between1AndN_Solution($n % $tem);
}
function getLenNum($n)
{
$len = 0;
while ($n != 0) {
$len++;
$n = intval($n / 10);
}
return $len;
}
$n = 327; // 0-300, 300-327
var_dump(NumberOf1Between1AndN_Solution($n));
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化