【leetcode】1332. 删除回文子序列(remove-palindromic-subsequences)(思维)[简单]

2023-05-16

链接

https://leetcode-cn.com/problems/remove-palindromic-subsequences/

耗时

解题:5 min
题解:7 min

题意

给你一个字符串 s,它仅由字母 'a''b' 组成。每一次删除操作都可以从 s 中删除一个回文 子序列

返回删除给定字符串中所有字符(字符串为空)的最小删除次数。

「子序列」定义:如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到,那么这个字符串就是原字符串的一个子序列。

「回文」定义:如果一个字符串向后和向前读是一致的,那么这个字符串就是一个回文。

提示:

  • 1 <= s.length <= 1000
  • s 仅包含字母 'a'  和 'b'

思路

仔细读题发现字符串仅由 ab 组成。也就是说只有两种字母,字母相同的子序列是回文序列,所以可以第一次删除所有由 a 组成的子序列,第二次删除所有由 b 组成的子序列。最多需要两次删除所有字符,而一次的情况是当且仅当原串 s 是回文串。

时间复杂度: O ( n ) O(n) O(n)

AC代码

class Solution {
    public int removePalindromeSub(String s) {
        String re_s = new StringBuffer(s).reverse().toString();
        if(s.equals(re_s)) return 1;
        return 2;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【leetcode】1332. 删除回文子序列(remove-palindromic-subsequences)(思维)[简单] 的相关文章

随机推荐