[Problem] Removing Stars From a String

댕청·2026년 1월 10일

문제 풀이

목록 보기
38/40

Description

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.

Example 1:

Input: s = "leet**cod*e"
Output: "lecoe"
Explanation: Performing the removals from left to right:

  • The closest character to the 1st star is 't' in "leet**cod*e". s becomes "lee*cod*e".
  • The closest character to the 2nd star is 'e' in "lee*cod*e". s becomes "lecod*e".
  • The closest character to the 3rd star is 'd' in "lecod*e". s becomes "lecoe".
    There are no more stars, so we return "lecoe".

Example 2:

Input: s = "erase*****"
Output: ""
Explanation: The entire string is removed, so we return an empty string.

Approach

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.

Solution

class Solution:
    def removeStars(self, s: str) -> str:
        result = []
        for char in s:
            if char == '*':
                result.pop()
            else:
                result += char
        return ''.join(result)
profile
될때까지 모든 걸 다시 한번

0개의 댓글