给定长度为 n 的字符串 s,需要算出它的所有非空子序列的回文化代价之和,对 10^9+7 取模。回文化代价指把一个字符串改成回文串时,最少要修改多少字符。
对于一个子序列 t,改成回文的代价等于它两端对应位置上不相等的字符对数。
我们定义一个字符串的 “回文化代价” 为将该字符串直接修改成回文串(不允许重排字符)所需的最小字符修改次数。
现给定字符串 s,请你求出 s 的所有非空子序列的 “回文化代价” 之和,并将结果对 109+7 取模后输出。
【名词解释】
输入一行,包含一个字符串 s,其中 s 仅由小写英文字母构成,且满足 1≤∣s∣≤200,其中 ∣s∣ 表示 s 的长度。
输出一个整数,表示 s 的所有非空子序列的回文化代价之和对 109+7 取模后的结果。
输入
aba
输出
2
说明
字符串 "aba" 的非空子序列共有 23−1=7 个,它们分别为:
因此,总和为 0+0+0+1+0+1+0=2。
输入
abb
输出
3
说明
字符串 "abb" 的非空子序列共有 23−1=7 个,它们分别为:
因此,总和为 0+0+0+1+1+0+1=3。
输入
aabbccddee
输出
2176
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.