You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计字符串中出现次数至少为Y次的字符并打印?

实现PHP字符出现次数统计并筛选指定次数以上的字符

需求明确

需要实现一个函数func(X: string, Y: int),完成以下功能:

  • 统计字符串X中每个字符的出现次数
  • 返回出现次数至少为Y次的字符及其对应次数的数组
    示例:
  • 调用func("UserGems",2)返回["s" => 2, "e" => 2]
  • 调用func("UserGems",3)返回[]

现有代码的问题

你当前的代码存在几个关键问题:

  • 未封装为可复用的函数,无法传入自定义的字符串X和阈值Y
  • 条件判断中误用了赋值符号=,而非比较符号>=,导致逻辑错误
  • 固定了筛选阈值为1,无法根据需求动态调整
  • 直接输出结果而非返回数组,不符合需求的调用形式

正确实现代码

function func(string $X, int $Y): array {
    // 统计每个字符的出现次数,count_chars(1)返回ASCII码为键、次数为值的数组
    $charCounts = count_chars($X, 1);
    $result = [];
    
    foreach ($charCounts as $ascii => $count) {
        // 将ASCII码转换为对应字符
        $char = chr($ascii);
        // 筛选出现次数≥Y的字符
        if ($count >= $Y) {
            $result[$char] = $count;
        }
    }
    
    return $result;
}

// 测试示例
print_r(func("UserGems", 2)); // 输出 Array ( [s] => 2 [e] => 2 )
print_r(func("UserGems", 3)); // 输出 Array ( )

关键说明

  1. 高效统计字符:使用PHP内置函数count_chars($X, 1),可以快速统计字符串中每个字符的出现次数,返回的数组以字符的ASCII码为键,出现次数为值
  2. 字符转换:通过chr($ascii)将ASCII码转换为对应的可见字符,方便结果的可读性
  3. 动态筛选:根据传入的参数Y,判断字符出现次数是否达标,将符合条件的字符存入结果数组
  4. 函数化设计:封装为函数后,可随时传入不同的字符串和阈值进行调用,提升代码复用性

内容的提问来源于stack exchange,提问作者MIRACULOUS LINKS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:10:15