不使用字符串计算数组元素首位数字之和,str_split是否被禁止?
疑问解答
是的,str_split 属于典型的字符串处理函数,你当前的实现逻辑是将数字隐式转换为字符串后拆分取首字符,完全不符合「不使用字符串操作」的要求,需要替换为纯数学运算的实现方案。
正确实现逻辑
不使用字符串的前提下,提取正整数首位数字的数学逻辑非常简单:
- 对于任意正整数,只要数值大于等于10,就不断除以10后取整,直到得到的结果小于10,这个结果就是该数字的首位数字
- 举例:25除以10取整得2(小于10,首位为2);123除以10取整得12,再除以10取整得1(小于10,首位为1)
符合要求的代码实现
public function pom() { $array = [25, 12, 5, 82, 15]; $result = 0; foreach ($array as $num) { $first = $num; while ($first >= 10) { $first = intval($first / 10); } $result += $first; } return $result; }
代码说明
- 全程没有使用任何字符串相关函数,完全通过除法、取整运算实现需求
- 用
foreach遍历数组比手动控制下标遍历更简洁,也避免了原代码中每次循环都调用count()的性能损耗 - 对单数字元素(比如示例中的5)可以直接命中逻辑,不需要额外做边界判断
内容的提问来源于stack exchange,提问作者daredareize
相关产品推荐
相关产品推荐

