题记:
给你一个整数 num
,返回 num
中能整除 num
的数位的数目。
如果满足 nums % val == 0
,则认为整数 val
可以整除 nums
。
示例 1:
输入:num = 7
输出:1
解释:7 被自己整除,因此答案是 1 。
示例 2:
输入:num = 121
输出:2
解释:121 可以被 1 整除,但无法被 2 整除。由于 1 出现两次,所以返回 2 。
示例 3:
输入:num = 1248
输出:4
解释:1248 可以被它每一位上的数字整除,因此答案是 4 。
提示:
题目来源:https://leetcode.cn/problems/count-the-digits-that-divide-a-number/
解题方法:
方法一:先将数字装换为字符串,再将字符串分隔为数组,再循环进行取余遍历
方法二:先将数字转换为字符串,再根据字符串的下标进行取余遍历
代码如下:
class Solution {
/**
* @param Integer $num
* @return Integer
*/
//方法1
function countDigits($num) {
$str_num = strval($num); //strval — 获取变量的字符串值
$str_num_array = str_split($str_num); //str_split — 将字符串转换为数组
$res = 0;
foreach($str_num_array as $value){
if($num % $value == 0){
$res++;
}
}
return $res;
}
//方法2
function countDigits_two($num) {
$str_num = strval($num);
$res = 0;
for ($i = 0; $i < strlen($str_num); $i++){
if ($num % $str_num[$i] == 0) {
$res++;
}
}
return $res;
}
}
$s = new Solution();
$res = $s->countDigits(1248);
print_r($res);
//输出示例为:4