LeetCode 394 [Decode String]

原題

給一段string,解碼

樣例

s = "3[a]2[bc]", return "aaabcbc".
s = "3[a2[c]]", return "accaccacc".
s = "2[abc]3[cd]ef", return "abcabccdcdcdef".

解題思路

  • 一個stack記錄倍數
  • 一個stack記錄string
  • 遇到"["添加倍數(因為倍數可能是“123”...), 遇到"]"彈出一段string乘以倍數,再壓入棧

完整代碼

class Solution(object):
    def decodeString(self, s):
        """
        :type s: str
        :rtype: str
        """
        if not s:
            return ""
    
        digit = []
        string = []
        temp_digit = ""
        for char in s:
            if char.isdigit():
                temp_digit += char
            elif char == "[":
                digit.append(int(temp_digit))
                string.append(char)
                temp_digit = ""
            elif char == "]":
                cur = []
                temp = string.pop() 
                while string and temp != "[":
                    cur.insert(0, temp)
                    temp = string.pop()
                for i in range(digit.pop()):
                    string += cur
            else:
                string.append(char)
        return "".join(string)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容