本题要求计算字符串所有非空子列(子序列)的镜像化代价之和。
将一个子列变为镜像串(回文串)的最小修改次数,等于子列中位置对称但字符不同的字符对数量。
考虑原字符串中任意两个不同字符的位置 i 和 j(i < j 且 s[i] ≠ s[j]),它们在某些子列中可能成为一对对称位置,并对总代价产生贡献。只需统计所有这样的 (i, j) 对答案的贡献即可。
对于固定的一对 (i, j),要让它们恰好成为某个子列中的对称位置,需要满足:
对于一个由小写英文字母组成的字符串,定义它的一个\textbf{子列}为从该字符串中删除任意个字符后保持原顺序得到的字符串。如果一个字符串正读与反读完全相同,则称其为\textbf{镜像串}。对于任意一个子列,可以多次进行\textbf{字符变更}操作(每次可将任一字符替换为任意小写字母),将其变为镜像串所需的最少变更次数称为该子列的\textbf{代价}。
现给定一个长度为 n 的字符串 s,请你求出 s 的所有非空子列的代价之和,并对 109+7 取模。
约束:字符串 s 仅由小写英文字母组成,且长度 n 满足 1≤n≤200。
输入包含一行,为一个仅由小写英文字母构成的字符串 s。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册