← Back to Home

stack


Standard stack

2390. Removing Stars From a String

class Solution {
    public String removeStars(String s) {
        Stack<Character> stack = new Stack<>();
        int i = 0;
        while(i < s.length()){
            if(s.charAt(i) == '*' && !stack.isEmpty()){
                stack.pop(); i++;
            }
            else
                stack.push(s.charAt(i++));
        }

        StringBuilder res = new StringBuilder();
        while(!stack.isEmpty()) res.append(stack.pop());

        return res.reverse().toString();
    }
}

Stack using StringBuilder

1047. Remove All Adjacent Duplicates In String

class Solution {
    public String removeDuplicates(String s) {
        StringBuilder res = new StringBuilder();
        for(int i = 0; i < s.length(); i++){
            // pop
            int len = res.length();
            if(len>0 && s.charAt(i) == res.charAt(len-1))
                res.setLength(len-1);
            // push
            else
                res.append(s.charAt(i));
        }
        return res.toString();
    }
}

Stack using Arrays

1047. Remove All Adjacent Duplicates In String

class Solution {
    public String removeDuplicates(String s) {
        char[] stack = new char[s.length()];
        int len = 0;
        for(int i = 0; i < s.length(); i++){
            // pop
            if(len>0 && s.charAt(i) == stack[len-1])
                len--;
            // push
            else 
                stack[len++] = s.charAt(i);
        }
        return new String(stack, 0, len);
    }
}