LeetCode 1047. 删除字符串中的所有相邻重复项
题目描述
思路分析
我们可以使用栈来解决这个问题。
- 遍历字符串中的每个字符,如果栈不为空且栈顶元素与当前字符相同,则弹出栈顶元素(表示删除相邻重复项);
- 否则,将当前字符压入栈中。
- 最后,栈中的元素就是去除相邻重复项后的结果。
参考代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
func removeDuplicates(s string) string {
stack := []byte{}
for i := 0; i < len(s); i++ {
if len(stack) > 0 && stack[len(stack)-1] == s[i] {
// 如果栈顶元素与当前字符相同,则弹出栈顶元素
stack = stack[:len(stack)-1]
} else {
// 否则,将当前字符压入栈中
stack = append(stack, s[i])
}
}
return string(stack)
}
- 时间复杂度:O (n),其中 n 是字符串的长度。我们只需遍历字符串一次。
- 空间复杂度:O (n),在最坏情况下,栈中可能会存储所有字符。
1
write your code here
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
本博客所有文章除特别声明外,均采用