Skip to content

LeetCode 1209. Remove All Adjacent Duplicates in String II #109

@Woodyiiiiiii

Description

@Woodyiiiiiii

这道题关键是遍历到每个字符,要跟前面的字符匹配并计数,还涉及到消除。所以关键是要想到用,用栈保存字符和它出现次数。

class Solution {
    public String removeDuplicates(String s, int k) {
        
        Stack<Pair> stack = new Stack<>();
        int n = s.length();

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; i++) {
            char c = s.charAt(i);
            if (stack.isEmpty() || stack.peek().c != c) {
                stack.push(new Pair(c, 1));
                sb.append(c);
            } else {
                Pair pair = stack.peek();
                pair.count++;
                sb.append(c);
                if (pair.count == k) {
                    stack.pop();
                    sb.delete(sb.length() - k, sb.length());
                }
            }
        }

        return sb.toString();
        
    }
}

class Pair {

    public char c;

    public int count;

    public Pair(char c, int count) {
        this.c = c;
        this.count = count;
    }

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions