본문 바로가기
Algorithm/leetcode

[leetcode]1074.Remove All Adjacent Duplicates In String

by 세류오 2023. 8. 30.

LeetCode - The World's Leading Online Programming Learning Platform

 

Remove All Adjacent Duplicates In String - LeetCode

Can you solve this real interview question? Remove All Adjacent Duplicates In String - You are given a string s consisting of lowercase English letters. A duplicate removal consists of choosing two adjacent and equal letters and removing them. We repeatedl

leetcode.com

문제 이해

영어 단어로 생성된 문자열을 매개변수로 받음 문자열 중 단어가 중복되어 있다면 단어를 삭제 ➡ “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();
    }
}