Удаление звездочек из строки

Средняя

Описание задачи #

Вам дана строка s, содержащая звездочки *.

За одну операцию вы можете:

Верните строку после того, как все звезды были удалены.

Примечание


Ограничения #


Примеры #

  • Входные данные: "leet**cod*e"

    Ответ: "lecoe"

  • Входные данные: "erase*****"

    Ответ: ""


Решение #

На самом деле эта задача не соответствует среднему уровню сложности и решается крайне просто.

Чтобы решить задачу, нужно воспользоваться стеком. Итерируемся по строке и для каждого символа делаем следующее:

Таким образом после перебора всей строки мы получим в стеке только нужные символы. В конце остается только собрать стек в строку и вернуть ее.

Реализация #

  • package remove_stars
    
    func removeStars(s string) string {
    	res := make([]rune, 0, len(s))
    
    	for _, char := range []rune(s) {
    		if char == '*' {
    			res = res[:len(res)-1]
    		} else {
    			res = append(res, char)
    		}
    	}
    
    	return string(res)
    }

  • export const removeStars = (s: string): string => {
        let res: string[] = []
    
        for (let char of s) {
            if (char === "*") {
                res.pop()
            } else {
                res.push(char)
            }
        }
    
        return res.join("")
    }

Оценка сложности #

По времени

Сложность O(n), так как мы итерируемся по всей строке.

По памяти

Сложность O(n), так как мы создаем стек для хранения промежуточного результата.

Оригинал задачи на Leetcode
< Предыдущая задача
Следующая задача >