You are given a string
In one operation, you can:
-
Choose a star in
s . - Remove the closest non-star character to its left., as well as remove the star itself.
Return the string after all stars have been removed.
Note:
- The input will be generated such that the operation is always possible.
- It can be shown that the resulting string will always be unique.
Output: "coe"
Explanation: Performing the removals from left to right:
- The closest left side character to the 1st star is 's' in "cs**cod*e".
- The closest left side character to the 2nd star is 'c' in "c*cod*e".
- The closest left side character to the 3rd star is 'd' in "cod*e".
There are no more stars, so we return "coe".
Output: ""
Explanation: The entire string is removed, so we return an empty string.
Constraints:
1 <= s.length <= 105 s consists of lowercase English letters and stars* .- The operation above can be performed on
s .
Contents
Solution 1 - Using stack, when '*' immediately remove top element from stack
In this approach, we are going to loop through characters of input string
Complexity Analysis:
Time complexity: Above code runs in O(n) time.
Space complexity: O(n).
Above implementations source code can be found at