1047. Remove All Adjacent Duplicates In String
Вам дана строка s, состоящая из строчных английских букв. Удаление дубликатов заключается в выборе двух соседних и одинаковых букв и их удалении. Мы многократно производим удаление дубликатов в s, пока не перестанем это делать. Верните конечную строку после того, как все такие удаления дубликатов будут произведены. Можно доказать, что ответ уникален.
Пример:
Input: stones = [2,7,4,1,8,1]
Output: 1
C# решение
сопоставлено/оригиналpublic class Solution {
public string RemoveDuplicates(string s) {
Stack<char> stack = new Stack<char>();
foreach (char c in s) {
if (stack.Count > 0 && stack.Peek() == c) {
stack.Pop();
} else {
stack.Push(c);
}
}
char[] result = stack.ToArray();
Array.Reverse(result);
return new string(result);
}
}
C++ решение
auto-draft, проверить перед отправкой#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public string RemoveDuplicates(string s) {
stack<char> stack = new stack<char>();
foreach (char c in s) {
if (stack.size() > 0 && stack.Peek() == c) {
stack.pop();
} else {
stack.push(c);
}
}
char[] result = stack.ToArray();
Array.Reverse(result);
return new string(result);
}
}
Java решение
сопоставлено/оригиналpublic class Solution {
public String removeDuplicates(String s) {
StringBuilder stack = new StringBuilder();
for (char c : s.toCharArray()) {
int len = stack.length();
if (len > 0 && stack.charAt(len - 1) == c) {
stack.deleteCharAt(len - 1);
} else {
stack.append(c);
}
}
return stack.toString();
}
}
Python решение
сопоставлено/оригиналdef removeDuplicates(s: str) -> str:
stack = []
for char in s:
if stack and stack[-1] == char:
stack.pop()
else:
stack.append(char)
return ''.join(stack)
Go решение
сопоставлено/оригиналpackage main
import (
"fmt"
)
func removeDuplicates(s string) string {
stack := []rune{}
for _, char := range s {
if len(stack) > 0 && stack[len(stack)-1] == char {
stack = stack[:len(stack)-1]
} else {
stack = append(stack, char)
}
}
return string(stack)
}
Algorithm
Создай пустой стек для хранения символов строки.
Проходи по символам строки, добавляя каждый символ в стек, если он не совпадает с верхним элементом стека, иначе удаляй верхний элемент.
После прохождения по строке, собери оставшиеся символы в стеке в результирующую строку и верни ее.
😎
Вакансии для этой задачи
Показаны активные вакансии с пересечением по тегам задачи.
Активных вакансий пока нет.