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);
}
}