Remove Palindromic Subsequences - Problem

You are 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. Note that a subsequence does not necessarily need to be contiguous.

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

Input & Output

Example 1 — Not a Palindrome
$ Input: s = "abab"
Output: 2
💡 Note: String "abab" is not a palindrome. We can remove all 'a's in step 1 ("aa" is palindrome) and all 'b's in step 2 ("bb" is palindrome).
Example 2 — Already Palindrome
$ Input: s = "aba"
Output: 1
💡 Note: String "aba" is already a palindrome, so we can remove the entire string in 1 step.
Example 3 — Empty String
$ Input: s = ""
Output: 0
💡 Note: Empty string requires 0 steps as there are no characters to remove.

Constraints

  • 0 ≤ s.length ≤ 1000
  • s consists only of letters 'a' and 'b'

Visualization

Tap to expand
Remove Palindromic Subsequences: "abab"Input: ababCheck if Palindrome"abab" ≠ "baba"Not a palindrome!Step 1Remove all "a"s"aa" is palindromeStep 2Remove all "b"s"bb" is palindrome+Answer: 2Minimum steps needed
Understanding the Visualization
1
Input
String with only 'a' and 'b' characters
2
Analysis
Check if palindrome or needs 2 steps
3
Output
Minimum steps: 0, 1, or 2
Key Takeaway
🎯 Key Insight: With only 'a' and 'b' characters, any subsequence of identical characters forms a palindrome, so we need at most 2 steps
Asked in
Facebook 15 Google 8
28.0K Views
Medium Frequency
~15 min Avg. Time
892 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen