leetcode 394 字串解碼

2021-10-10 09:34:38 字數 930 閱讀 8690

棧法

這道題難點是可以內嵌括號,需要從內向外去拼接字串,與棧的先入後出的特性對應。

使用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 保證為正整數。你可以認為輸入字串總是有效的 輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。此外,你可以認為原始資料不...