https://leetcode.com/problems/remove-all-adjacent-duplicates-in-string | Easy |
---|
Дана строка s
, состоящая только из строчных букв.
Удаляйте из неё пары соседних одинаковых символов, пока это возможно.
Верните получившуюся строку.
Input:
s = "abbaca”Output:
"ca”Explanation:
Например, в"abbaca"
можно удалить"bb"
, так как буквы одинаковые и стоят рядом. После этого строка превращается в"aaca"
, где можно удалить"aa"
. Итоговая строка —"ca"
.
Input:
s = "azxxzy”Output:
"ay”
fun removeDuplicates(s: String): String {
val stack = ArrayDeque<Char>()
for (c in s) {
if (stack.isNotEmpty() && stack.last() == c) {
stack.removeLast() // Удаляем пару одинаковых символов
} else {
stack.addLast(c) // Добавляем символ в стек
}
}
return stack.joinToString("") // Собираем строку из стека
}
O(n), так как проходим по строке один раз.
O(n), в худшем случае, если нет удаляемых пар.