給定乙個經過編碼的字串,返回它解碼後的字串。
編碼規則為: 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".
思路分析:一開始吧,可能我們都會認為這是一道遞迴解法題,蛋試遞迴在這道題實現貌似有點困難,因為這裡面的巢狀雖說比較一般,蛋試對於這種輸入"3[a2[c]3[d]]","2[abc]3[cd]ef"比較難以處理,因為在是否和上一次的結果合併這個問題上比較難以判斷。這時就要知道棧的應用了。
建立乙個num棧,乙個string棧,從前往後掃瞄字串:
如果是數字,讀入到num棧
如果是左括號,且後面是字元,讀入字串到string棧
如果是右括號。將string棧頂元素重複num棧頂元素次,放回到string棧
否則讀入乙個字元段,放入string棧
最後string棧頂就是結果
class
solution
numstack.
push
(stoi
(tempnum));
}else
if(s[nowindex]
==']'
)//如果string棧此時非空,則需要將剛剛得到的結果合併現在的string棧頂if(
!strstack.
empty()
)//最後放回到string棧中
strstack.
push
(tempres)
; nowindex +=1;
}else
if(s[nowindex]
=='['
) strstack.
push
(tempstr);}
else
//需要與string棧頂合併if(
LeetCode 字串解碼
給定乙個經過編碼的字串,返回它解碼後的字串。編碼規則為 k encoded string 表示其中方括號內部的 encoded string 正好重複 k 次。注意 k 保證為正整數。你可以認為輸入字串總是有效的 輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。此外,你可以認為原始資料不...
leetcode 字串解碼
給定乙個經過編碼的字串,返回它解碼後的字串。編碼規則為 k encoded string 表示其中方括號內部的 encoded string 正好重複 k 次。注意 k 保證為正整數。你可以認為輸入字串總是有效的 輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。此外,你可以認為原始資料不...
棧 字串 leetcode394 字串解碼
題目 解題思路 遍歷字串,如果遇到的是數,則把數存入num 如果遇到的是左括號,那麼將num壓入數棧,將左括號前面的字串ans壓入字串棧,然後將num清0,將ans也清空 如果遇到的是右括號,那麼將數棧的棧頂數彈出記為 k,然後將當前的ans重複k次,連線到字串棧的棧頂字串後面,然後將字串棧的棧頂字...