
Problem Statement
You are given a string s consisting of lowercase English letters. A duplicate removal consists of choosing two adjacent and equal letters and removing them.
We repeatedly make duplicate removals on s until we no longer can.
A note on the pattern. This question uses a stack, but not a monotonic one: nothing here keeps the stack in increasing or decreasing order. It sits in this chapter because it builds the habit every monotonic stack question needs, which is deciding what to do with a new item by looking at the top of the stack and popping when a condition holds. The ordering invariant arrives in the questions after it.
Return the final string after all such duplicate removals have been made.
Examples
-
- Input:
s = "abccba" - Output:
"" - Explanation: First, we remove "cc" to get "abba". Then, we remove "bb" to get "aa". Finally, we remove "aa" to get an empty string.
- Input:
-
- Input:
s = "foobar" - Output:
"fbar" - Explanation: We remove "oo" to get "fbar".
- Input:
-
- Input:
s = "fooobar" - Output:
"fobar" - Explanation: We remove the pair "oo" to get "fobar".
- Input:
-
- Input:
s = "abcd" - Output:
"abcd" - Explanation: No adjacent duplicates so no changes.
- Input:
Constraints:
- 1 <= s.length <= 10<sup>5</sup>
sconsists of lowercase English letters.
Try it yourself
Try solving this question here:
.....
.....
.....