给你一个字符串 s
和一个整数 k
。
在一次操作中,你可以将任意位置的字符替换为字母表中相邻的字符(字母表是循环的,因此 'z'
的下一个字母是 'a'
)。例如,将 'a'
替换为下一个字母结果是 'b'
,将 'a'
替换为上一个字母结果是 'z'
;同样,将 'z'
替换为下一个字母结果是 'a'
,替换为上一个字母结果是 'y'
。
返回在进行 最多 k
次操作后,s
的 最长回文子序列 的长度。
子序列 是一个 非空 字符串,可以通过删除原字符串中的某些字符(或不删除任何字符)并保持剩余字符的相对顺序得到。
回文 是正着读和反着读都相同的字符串。
示例 1:
输入: s = "abced", k = 2
输出: 3
解释:
s[1]
替换为下一个字母,得到 "acced"
。s[4]
替换为上一个字母,得到 "accec"
。子序列 "ccc"
形成一个长度为 3 的回文,这是最长的回文子序列。
示例 2:
输入: s = "aaazzz", k = 4
输出: 6
解释:
s[0]
替换为上一个字母,得到 "zaazzz"
。s[4]
替换为下一个字母,得到 "zaazaz"
。s[3]
替换为下一个字母,得到 "zaaaaz"
。整个字符串形成一个长度为 6 的回文。
提示:
1 <= s.length <= 200
1 <= k <= 200
s
仅由小写英文字母组成。