ペアリング削除


🔗 質問リンク


https://programmers.co.kr/learn/courses/30/lessons/12973#

問題の説明


ペアリングを削除するには、アルファベット小文字の文字列で開始します.まず、文字列内で同じ文字を2つ持つペアを検索します.次に、この2つの文字列を削除し、前後に文字列を接続します.この手順を繰り返してすべての文字列を削除すると、ペアリングの削除が終了します.文字列Sが指定されている場合は、ペアリングを正常に削除できるかどうかを返す戻り関数を完了します.成功した場合は1を返し、そうでない場合は0を返します.
例えば、文字列S=Baabaa
b aa baa → bb aa → aa →
すべての文字列を中の順序で削除できるため、1を返します.

⚠▼制限


  • 文字列の長さ:100,000未満の自然数

  • すべての文字列は小文字で構成されています.
  • 💡 プール(言語:JavaとPython)


    forはドアの周りを一度スタックに積み上げ、同じものが現れたらスタックから削除し、同時にパリティ文字をスタックに入れず、発見したらすぐに削除する解題方法です.

    Java

    import java.util.*;
    
    class Solution {
        public int solution(String s) {
            Stack<Character> stack = new Stack<>();
            for (char c : s.toCharArray()) {
                if (stack.size() == 0)
                    stack.push(c);
                else if (stack.peek() == c)
                    stack.pop();
                else
                    stack.push(c);
            }
            return stack.size() == 0 ? 1 : 0;
        }
    }

    Python

    def solution(s): 
        stack = []
        for i in s:
            if len(stack) == 0: stack.append(i)
            elif stack[-1] == i: stack.pop()
            else: stack.append(i)
            
        if len(stack) == 0:
        	return 1
        else: 
        	return 0