[プログラマー/python]レベル2ペアリングの削除



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

アルゴリズム分類

  • スタック/キュー
  • 問題を解く


    解けましたが、コードに示すように複雑です.ほほほ
    基本論理はスタックベースでindexを調整し,問題の条件に従ってペアリング排除する論理である.
    より単純なコードの論理も同じです.
    結果の最後の終了値を文字列の値と比較します.

    ソースコード

    def solution(s):
        stack=[]
        stack.append(s[0])
        index=1
        while True:
            if index==len(s):
                break
        
            if len(stack)==0:
                stack.append(s[index])
                index+=1
                
            pick=stack.pop()
            #print(index,pick)
            if index==len(s):
                stack.append(pick)
            for i in range(index,len(s)):
                if pick!=s[i]:
                    stack.append(pick)
                    stack.append(s[i])
                    index+=1
                    break
                else:
                    index+=1
                    break
        #print(stack)
        
        if len(stack)==0:
            return 1
        return 0
    より単純なコード
    def solution(s):
        result = []
        for i in s:
            if len(result)==0:
                result.append(i)
            else:
                if result[-1]==i:
                    result.pop()
                else:
                    result.append(i)    
        
        if len(result)==0:
            return 1
        return 0