回文系列总结
1332. 删除回文子序列
给你一个字符串
s
,它仅由字母'a'
和'b'
组成。每一次删除操作都可以从s
中删除一个回文 子序列。返回删除给定字符串中所有字符(字符串为空)的最小删除次数。
样例
Input:s = "baabb"
Output:2
解释:"baabb" -> "b" -> "".
先删除回文子序列 "baab",然后再删除 "b"。
也可以
"baabb" -> "bbb" -> ""
思路
因为只由 a
和 b
组成,所以对于任何一个字符串,最多只需要两次就可以完全删除。可以第一次删除全A,第二次删除全B。只需要分为三种情况:空字符是 0,回文串返回 1,非回文串返回 2
代码
class Solution:
def removePalindromeSub(self, s: str) -> int:
if not s: return 0 # 空字符
if s == s[::-1]: # 回文串
return 1
else: # 非回文串
return 2