Decode String

这个题很难写出简洁干净的代码... 暂时不研究discussion里面那些了,LC那三个测试case基本把所有边界情况都涵盖了

class Solution(object):
    def decodeString(self, s):
        """
        :type s: str
        :rtype: str
        """
        result = ''
        curNum = 0
        curString = ''
        stack = []
        n = len(s)

        for i in xrange(n):
            if s[i].isdigit():
                if curString:
                    stack.append(curString)
                    curString = ''
                curNum = 10 * curNum + ord(s[i]) - ord('0')
            elif s[i] == '[':
                stack.append(curNum)
                curNum = 0
            elif s[i].isalpha():
                curString += s[i]
            else:
                while type(stack[-1]) != int:
                    curString = stack.pop() + curString
                num = stack.pop()
                stack.append(num * curString)
                curString = ''

        return ''.join(stack) + curString

results matching ""

    No results matching ""