1332. Remove Palindromic Subsequences

Description

Given a string s consisting only of letters 'a' and 'b'. In a single step you can remove one palindromic subsequence from s.

Return the minimum number of steps to make the given string empty.

A string is a subsequence of a given string, if it is generated by deleting some characters of a given string without changing its order.

A string is called palindrome if is one that reads the same backward as well as forward.

Constraints

  • 0 <= s.length <= 1000

  • s only consists of letters 'a' and 'b'

Approach

  • GeeksforGeeks

  • ProgramCreek

  • YouTube

Examples

Input: s = "ababa"

Output: 1

Explanation: String is already palindrome

Solutions

/**
 * Time complexity : O(n)
 * Space complexity : O(1)
 */

class Solution {
    public int removePalindromeSub(String s) {
        if(s.isEmpty()) {
            return 0;
        }
        return isPalindrome(s)? 1: 2;
    }
    
    private boolean isPalindrome(String s) {
        int left = 0, right = s.length()-1;
        while(left < right) {
            if(s.charAt(left) != s.charAt(right)) {
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
}

Follow up

Last updated

Was this helpful?