棧法
這道題難點是可以內嵌括號,需要從內向外去拼接字串,與棧的先入後出的特性對應。
使用stack記錄前乙個框的multi和res,res記錄字串結果,multi記錄數字
每次碰到"["都把前乙個multi和res記錄下來,並重置multi和res
碰到數字就記錄下multi,這裡乘以10是為了包括這個數字可能不止是個位
碰到字母就直接把res和該字母連線
碰到"]"就pop出stack的乙個記錄,屬於前乙個框的記錄,multi是當前res的倍數,而last_res是數字前面的字母
還存在遞迴法和正規表示式的方法,暫時不記錄。
棧法
def
decodestring
(self,s)
: stack =
res =
'' multi =
0for i in s:
if i ==
'[':
[multi,res]
) res,multi ="",
0elif i ==
']':
cur_multi,last_res = stack.pop(
) res = last_res + cur_multi * res
elif i.isdigit(
):
multi = multi *10+
int(i)
#如果是幾十位數以上
else
: res += i
return res
復 雜度
分析
:\color
複雜度分析:
棧法
Leetcode 394 字串解碼
給定乙個經過編碼的字串,返回它解碼後的字串。編碼規則為 k encoded string 表示其中方括號內部的 encoded string 正好重複 k次。注意 k 保證為正整數。你可以認為輸入字串總是有效的 輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。此外,你可以認為原始資料不包...
LeetCode 394 字串解碼
給定乙個經過編碼的字串,返回它解碼後的字串。編碼規則為 k encoded string 表示其中方括號內部的 encoded string 正好重複 k 次。注意 k 保證為正整數。你可以認為輸入字串總是有效的 輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。此外,你可以認為原始資料不...
LeetCode 394 字串解碼
給定乙個經過編碼的字串,返回它解碼後的字串。編碼規則為 k encoded string 表示其中方括號內部的 encoded string 正好重複 k 次。注意 k 保證為正整數。你可以認為輸入字串總是有效的 輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。此外,你可以認為原始資料不...