You are given a string s and an integer k, a kduplicate removal consists of choosing k adjacent and equal letters from s and removing them, causing the left and the right side of the deleted substring to concatenate together.
We repeatedly make kduplicate removals on s until we no longer can.
Return the final string after all such duplicate removals have been made. It is guaranteed that the answer is unique.
Input:
s = "abcd", k = 2
Output:
"abcd"
Explanation: There's nothing to delete.
Example 2:
1
2
3
4
5
6
7
8
Input:
s = "deeedbbcccbdaa", k = 3
Output:
"aa"
Explanation:
First delete "eee" and "ccc", get "ddbbbdaa"
Then delete "bbb", get "dddaa"
Finally delete "ddd", get "aa"
Example 3:
1
2
3
4
Input:
s = "pbbcggttciiippooaais", k = 2
Output:
"ps"
The key idea is to use a stack to keep track of characters and their consecutive counts. As we iterate through the string, we push each character and its count onto the stack. If the count reaches k, we remove that group from the stack, effectively removing k adjacent duplicates. This process continues until the end of the string, ensuring all k-adjacent duplicates are removed.