📌  相关文章
📜  使用堆栈从字符串删除所有重复的相邻字符(1)

📅  最后修改于: 2023-12-03 15:22:23.326000             🧑  作者: Mango

使用堆栈从字符串删除所有重复的相邻字符

在编程中,我们经常需要对字符串进行处理。本主题的目标是使用堆栈数据结构删除字符串中所有重复的相邻字符。下面将介绍如何实现这个目标。

实现思路

我们可以使用堆栈来实现这个目标。具体步骤如下:

  1. 创建一个空堆栈
  2. 遍历字符串中的每个字符,如果当前字符与堆栈的栈顶元素相同,则弹出栈顶元素;否则,将当前字符压入堆栈
  3. 将堆栈中的所有元素弹出并组成新的字符串
代码实现

以下是使用Java实现的示例代码:

public String removeAdjacentDuplicates(String input) {
    // 创建一个空堆栈
    Stack<Character> stack = new Stack<>();
    
    // 遍历字符串中的每个字符
    for (char c : input.toCharArray()) {
        if (!stack.isEmpty() && stack.peek() == c) {
            // 如果当前字符与堆栈的栈顶元素相同,则弹出栈顶元素
            stack.pop();
        } else {
            // 否则,将当前字符压入堆栈
            stack.push(c);
        }
    }
    
    // 将堆栈中的所有元素弹出并组成新的字符串
    StringBuilder sb = new StringBuilder();
    while (!stack.isEmpty()) {
        sb.append(stack.pop());
    }
    
    // 反转字符串并返回
    return sb.reverse().toString();
}
测试样例

以下是一些测试样例:

Input: "abbaca" Output: "ca"

Input: "aaaaaaa" Output: "a"

Input: "abbbbbbbbbbbccdeffffghiiiiijjjkkllmmmnoooopppppppqrrrrrsstuuuvvvvwwwxyyz" Output: "abcdefghijklmnopqrstuvwxyz"