题目

类型:双指针

image.png

解题思路

由于 s 只有字母 a 和 b,并且删除的是「子序列」,因此最大的删除次数为 2(先删除所有的 a,再删除所有的 b)。
同时 s 本身不为空串(不存在删除次数为 0 的情况),因此如果我们不能一次删除的话(s 本身为回文),只能通过 2 次进行删除。

代码

  1. class Solution {
  2. public int removePalindromeSub(String s) {
  3. int n = s.length();
  4. int i = 0, j = n - 1;
  5. while (i < j) {
  6. if (s.charAt(i) != s.charAt(j)) return 2;
  7. i++; j--;
  8. }
  9. return 1;
  10. }
  11. }