You are given a string s, which contains stars *.
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.
Input: s = "leet**cod*e"
Output: "lecoe"
Explanation: Performing the removals from left to right:
"leet**cod*e". s becomes "lee*cod*e"."lee*cod*e". s becomes "lecod*e"."lecod*e". s becomes "lecoe"."lecoe".Input: s = "erase*****"
Output: ""
Explanation: The entire string is removed, so we return an empty string.
A simple stack problem, we can simply pop whenever we see a *' character. This is possible as the problem notes that all operations are possible, where we do not have to check for any exceptions. Hence, we can simply add to the resultant string for all other characters, and pop the element on top whenever we encounter the '*' character.
class Solution:
def removeStars(self, s: str) -> str:
result = []
for char in s:
if char == '*':
result.pop()
else:
result += char
return ''.join(result)