Ternary Expression Parser

此种类型的题一般绝对有很简短的写法,但是基本不可能找到,因为随着输入变长考虑的情况会越来越多..

具体到这道题,思路是因为计算顺序从右到左,我们可以先记录所有问号的位置,然后从尾部开始往起点靠,而且这样改变字符串并不会影响一开始记录的下标,因为我们是从末尾开始修改的

class Solution(object):
    def parseTernary(self, expression):
        """
        :type expression: str
        :rtype: str
        """
        n = len(expression)
        stack = [i for i in xrange(n) if expression[i] == "?"]
        result = expression

        while stack:
            index = stack.pop()
            result = result[:index - 1] + self.eval(result[index - 1], result[index : index + 4]) + result[index + 4:]

        return result

    def eval(self, det, string):
        if det == 'T':
            return string[1]
        return string[3]

results matching ""

    No results matching ""