049 · Remove All Adjacent Duplicates In String

algorithm
Published

July 1, 2026

Problem

给定一个字符串 s

如果字符串中有两个相邻字符相同,就可以把这两个字符一起删除。

删除以后,剩下的字符会重新连在一起。这个过程会一直重复,直到字符串中不再有相邻且相同的两个字符。

请返回:最终剩下的字符串。

题目保证:最终结果是唯一的。

例如:

s = "abbaca"

先删除中间相邻的 "bb"

"abbaca" -> "aaca"

现在 "aaca" 开头有相邻的 "aa",继续删除:

"aaca" -> "ca"

最后没有相邻且相同的字符,所以答案是:

"ca"

Examples

示例 1

Input:  s = "abbaca"
Output: "ca"

解释:先删除 "bb" 得到 "aaca",再删除 "aa" 得到 "ca"

示例 2

Input:  s = "azxxzy"
Output: "ay"

解释:先删除 "xx" 得到 "azzy",再删除 "zz" 得到 "ay"

示例 3

Input:  s = "a"
Output: "a"

解释:只有一个字符,没有可以删除的相邻重复字符。

Constraints

  • \(1 \leq\) s.length \(\leq 10^5\)
  • s 只包含小写英文字母