有一款叫做吃豆人(Pacman)的游戏有许多粉丝,这些粉丝只要看到看到任何包含"pacman"作为子串的字符串就会变得非常激动。现在你有一个长度为 n 的字符串 S ,你每次可以将其中一个字母替换为另外一个字母,请问你最少需要替换多少次才能使其不含有"pacman"作为子串?
一行一个正整数 n(1 ≤ n ≤ 10^5) 表示字符串长度 随后一行仅包含小写字母的字符串 S 。
一行一个整数,表示答案。
6 pacman
1
11 pacmanacman
1
考点:字符串
数据规模 n ≤ 1e5 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:字符串
按字符逐个处理,或利用字符串的前后缀性质加速匹配。
思路框架(字符串 通法 · 非本题专属)
实现要点:Python 切片 s[l:r+1] 取子串;注意字符串不可变,频繁拼接改用 list。
复杂度:时间 O(n) ~ O(n²) | 空间 O(n)
该范式的通法易错点
对照本题
样例 1:输入 6 / pacman → 输出 1
通过把第一个p换成a即可
样例 2:输入 11 / pacmanacman → 输出 1
通过把第一个 n 换成除了 p 以外任意一个字符即可
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2024年春招-京东-技术通用岗位-第四批笔试。