[Leetcode] - 439

3234 ワード

  • 式の長さが長すぎて、再帰呼び出しによる解析ができない
  • スタックを使用して式を再帰的に処理する
  • 時間複雑度:O(N)
  • 空間複雑度:O(N)
  • ツリーで
  • を再開
    class Solution:
        def parseTernary(self, expression: str) -> str:                
            stack = []
            for c in reversed(expression):            
                if stack and stack[-1] == '?':
                    stack.pop()
                    left = stack.pop()
                    stack.pop()
                    right = stack.pop()
                    if c == 'T':
                        stack.append(left)
                    else:
                        stack.append(right)
                else:
                    stack.append(c)
            return stack.pop()