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

PHP统计唯一字符方法的结果缓存实现求助

给PHP的uniqueCharacters方法加缓存优化

直接给你改造后的代码,完全符合要求——用关联数组(映射)做缓存,自动复用已处理字符串的结果,不用重复执行耗时的统计操作:

function uniqueCharacters($str) {
    // 静态缓存:键是输入字符串,值是计算好的唯一字符数量,方法多次调用时会保留状态
    static $cache = [];

    // 先查缓存,有结果直接返回
    if (isset($cache[$str])) {
        return $cache[$str];
    }

    // 原有的统计逻辑(替换成你自己的原方法实现也可)
    $charCounts = count_chars($str, 1);
    $uniqueCount = 0;
    foreach ($charCounts as $count) {
        if ($count === 1) {
            $uniqueCount++;
        }
    }

    // 把结果存入缓存,下次调用直接复用
    $cache[$str] = $uniqueCount;

    return $uniqueCount;
}

关键细节说明:

  • 用static修饰的$cache是方法级静态变量,只会在第一次调用时初始化,后续调用都会复用这个数组,完美实现请求生命周期内的缓存持久化
  • 这里的关联数组就是要求的映射,它的键天然构成了已处理字符串的集合,同时存储对应结果,一举满足集合与映射的使用要求
  • 缓存逻辑完全独立于原有统计逻辑,你可以直接替换中间的统计代码为自己原有的uniqueCharacters实现,不影响功能

测试示例:

echo uniqueCharacters("hello"); // 首次计算,返回2(h、o)
echo uniqueCharacters("hello"); // 直接读缓存,返回2
echo uniqueCharacters("world"); // 首次计算,返回5
echo uniqueCharacters("world"); // 读缓存返回5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:15:39