演算法 力扣 394 字串解碼

2021-10-06 14:08:20 字數 1076 閱讀 6669

給定乙個經過編碼的字串,返回它解碼後的字串。編碼規則為: k[encoded_string],表示其中方括號內部的 encoded_string 正好重複 k 次。注意 k 保證為正整數。你可以認為輸入字串總是有效的;輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。此外,你可以認為原始資料不包含數字,所有的數字只表示重複的次數 k ,例如不會出現像 3a 或 2[4] 的輸入。

示例:

s = "3[a]2[bc]", 返回 "aaabcbc".

s = "3[a2[c]]", 返回 "accaccacc".

s = "2[abc]3[cd]ef", 返回 "abcabccdcdcdef".

分析

構建兩個輔助棧,乙個棧stack_res用來儲存臨時結果,乙個棧stack_mul用來儲存倍數,遍歷字串s中的字元c

c]時,進行出棧操作,從棧stack_mul和棧stack_res中分別彈出乙個元素為last_rescur_mul,然後拼接字串res = last_res + cur_mul * res

**實現

class

solution

else

if(c ==

']')

res =

newstringbuilder

(last_res + tmp);}

else

if(c >=

'0'&& c <=

'9')

else

}return res.

tostring()

;}}

複雜度分析

時間複雜度:只需要遍歷一遍s,所以複雜度為o(n)。

空間複雜度:最壞的情況下所有的除的字元都要入棧,所以空間複雜度最壞為o(n)。

力扣394 字串解碼

這道題主要涉及的是對遞迴和棧的理解。給定乙個經過編碼的字串,返回它解碼後的字串。編碼規則為 k encoded string 表示其中方括號內部的 encoded string 正好重複 k 次。注意 k 保證為正整數。你可以認為輸入字串總是有效的 輸入字串中沒有額外的空格,且輸入的方括號總是符合格...

394 字串解碼

給定乙個經過編碼的字串,返回它解碼後的字串。編碼規則為 k encoded string 表示其中方括號內部的 encoded string 正好重複 k 次。注意 k 保證為正整數。你可以認為輸入字串總是有效的 輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。此外,你可以認為原始資料不...

394 字串解碼

思路 思路一 使用棧 這種括號或者括號套括號的模式非常適合用棧來解決,設定乙個輔助棧,當遇到 的時候,開始將所有東西推到 棧中,直到遇到 時,開始取棧中的東西。取得方法 先取字元,再取數字,計算得到到的東西再壓入棧中 直到所有 都遍歷完為止 注意點 從棧中取的順序和最終生成結果得順序應該一致 cla...