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
相关产品推荐
相关产品推荐

