我们要在字符串中出现子串 "abcdefghijklmnopqrstuvwxyz"(长度为 26,下文记为目标串 T),允许的操作是:选择一个下标把字符改成任意小写字母。问最少需要多少次操作;若无法做到输出 -1。
关键事实
n < 26,无论如何修改都不可能出现长度为 26 的子串,答案为 -1。n ≥ 26,一定可以:选择任意长度为 26 的窗口,把其中的字符逐个改成 T 对应位置即可。因此答案等于
所有长度为 26 的窗口与 T 的最小“汉明距离”(不相等字符的个数)。远古遗迹中发现了一卷神秘的古卷,上面记录着一个由小写字母组成的序列 s,长度记为 n。你可以施法改动古卷上的字符:每次施法可以选择任意一个位置,将该位置的字母改成任意一个小写字母。为了让古卷发出光芒,需要在其中出现连续的一段,恰好等于一段特定的远古咒语:abcdefghijklmnopqrstuvwxyz。请你计算至少需要施法多少次才能使古卷满足条件。如果古卷的长度不足 26,则无论如何也无法出现这段咒语。
约束:测试包含多组独立的数据。字符串长度 n 不超过 2×10^5,所有数据组中 n 的总和不超过 2×10^5,数据组数 T 不超过 10^4。字符串仅由小写字母构成。
第一行输入一个整数 T,代表测试数据组数。接下来每两组描述一组测试数据:第一行输入一个整数 n,表示古卷序列的长度;第二行输入一个长度为 n 的字符串 s,仅包含小写字母。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册