스택을 사용하거나, 아니면 index-1을 통해 값을 비교하거나 선택할 수 있을 것 같다.
스택 문제니까 정석적으로 스택을 사용했다.
참고로 StringBuilder.reverse()
는 내부적으로 투포인터를 사용해 swap하는 방식이라고 함. 그러므로 O(N)을 만족시킬 수 있다.
class Solution {
public String removeStars(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if (c == '*' && !stack.isEmpty()) {
stack.pop();
} else {
stack.push(c);
}
}
StringBuilder sb = new StringBuilder();
while (!stack.isEmpty()) {
sb.append(stack.pop());
}
return sb.reverse().toString();
}
}