Decode String

https://leetcode.com/contest/leetcode-weekly-contest-3/problems/decode-string/

这是一道典型的stack题,但如果要我当场做出来其实还是需要脑子拐一点弯。

s = "3[a]2[bc]", return "aaabcbc".
s = "3[a2[c]]", return "accaccacc".
s = "2[abc]3[cd]ef", return "abcabccdcdcdef".

在这里面有三个重要的元素,current,prev 和count

四个判定条件:digit, "[" , "]" 和 char本身。

digit条件帮助我们得到count, 然后char帮助我们得到current,

"[" 条件我们把[ 之前的curr string 和 count push到stack

"]" 条件我们把stack上最靠近的两个prevstring 和count弄出来和当前curr融合成新的curr string

如下的顺序进行
s = "3[a]2[bc]"
1. "aaa" 2 [bc]
这时候的curr是"aaa"
count是0

2.
这时候count变成2 我们碰到了 "["
于是 stack = ["aaa",2]
curr是 "bc"

3.
这时候我们碰到"]"
stack.pop()
两次,得到prev="aaa", count = 2
curr = "aaa" + 2 * curr = "aaa" + "bcbc"="aaabcbc"

Last updated