?LeetCode刷題實(shí)戰(zhàn)394:字符串解碼
示例
示例 1:
輸入:s = "3[a]2[bc]"
輸出:"aaabcbc"
示例 2:
輸入:s = "3[a2[c]]"
輸出:"accaccacc"
示例 3:
輸入:s = "2[abc]3[cd]ef"
輸出:"abcabccdcdcdef"
示例 4:
輸入:s = "abc3[cd]xyz"
輸出:"abccdcdcdxyz"
解題
class Solution:
def decodeString(self, s: str) -> str:
#思路:這種類型的題,一種思路是棧,一種思路是遞歸。
#本解法用的是棧,當(dāng)遇到[時(shí),我們將數(shù)字壓入棧中,并開始用cur_str記錄中括號(hào)里的字母,如遇到],就將之前的數(shù)字出棧并與當(dāng)前的cur_str相乘。
mul, cur_str = 0, ''
stack = []
for c in s:
if c == '[':
stack.append((mul, cur_str))
mul, cur_str = 0, ''
elif c == ']':
n, pre = stack.pop()
cur_str = pre + n * cur_str
elif '0' <= c <= '9':
mul = 10 * mul + int(c)
else: #字母
cur_str += c
return cur_str
LeetCode1-380題匯總,希望對(duì)你有點(diǎn)幫助!
LeetCode刷題實(shí)戰(zhàn)381:O(1) 時(shí)間插入、刪除和獲取隨機(jī)元素
LeetCode刷題實(shí)戰(zhàn)382:鏈表隨機(jī)節(jié)點(diǎn)
LeetCode刷題實(shí)戰(zhàn)383:贖金信
LeetCode刷題實(shí)戰(zhàn)384:打亂數(shù)組
LeetCode刷題實(shí)戰(zhàn)385:迷你語法分析器
