LeetCode - The World's Leading Online Programming Learning Platform
문제 이해
영어 단어로 생성된 문자열을 매개변수로 받음 문자열 중 단어가 중복되어 있다면 단어를 삭제 ➡ “abbaca” → “aaca”(bb중복 삭제) → “ca”(aa중복 삭제)
남은 문자열을 return
문제 해결
Stack에 문자열을 문자로 하나씩 push Stack이 비어있지 않을 때 가상 마지막에 들어온 문자를 확인 다음 문자와 동일하다면 pop, StringBuilder에서 삭제
class Solution {
public String removeDuplicates(String s) {
Stack<Character> st = new Stack<>();
StringBuilder sb = new StringBuilder();
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if(!st.isEmpty() && st.peek() == c){//st에 값이 존하며, 가장 마지막 문자가 다음 문자와 같다면
st.pop();
sb.deleteCharAt(st.size());//st.size() = 가장 마지막에 들어온 문자 위치번호
} else {
st.push(c);
sb.append(c);
}
}
return sb.toString();
}
}
'Algorithm > leetcode' 카테고리의 다른 글
[leetcode]1381. Design a Stack With Increment Operation (0) | 2023.09.01 |
---|---|
[leetcode]1544.Make The String Great (0) | 2023.08.31 |
[leetcode] 1614. Maximum Nesting Depth of the Parentheses (0) | 2023.08.29 |
[leetcode] 1021.Remove Outermost Parentheses (0) | 2023.08.28 |
[leetcode] 844.Backspace String compare (0) | 2023.08.27 |