Leetcode 439 Solution

This article provides solution to leetcode question 439 (ternary-expression-parser)

https://leetcode.com/problems/ternary-expression-parser

Solution

class Solution:
    def parseTernary(self, expression: str) -> str:
        i = 0

        def parse():
            nonlocal i

            ch = expression[i]
            if ch.isnumeric():
                v = 0
                while i < len(expression) and expression[i].isnumeric():
                    v = 10 * v + int(expression[i])
                    i += 1
                return str(v)
            elif ch in ["T", "F"]:
                if i == len(expression) - 1 or expression[i + 1] != '?':
                    i += 1
                    return ch
                else:
                    cond = ch == "T"

                    i += 2
                    v1 = parse()
                    i += 1
                    v2 = parse()

                    if cond:
                        return v1
                    else:
                        return v2

        return str(parse())