394. 字符串解码

递归处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
func decodeString(s string) string {
// fmt.Printf("s: %v\n", s)
ans := ""

l, r, lc := 0, 0, 0
n := len(s)
count := ""

for i := 0; i < n; i++ {

if s[i] == '[' {
if lc == 0 {
l = i + 1
}
lc++
continue
}

if s[i] == ']' {
lc--
if lc == 0 {
r = i
temp := decodeString(s[l:r])
// fmt.Printf("temp: %v\n", s[l:r])
cnt, _ := strconv.Atoi(count)


for j := 0; j < cnt; j++ {
ans += string(temp)
}
count = ""
}

continue
}

if lc == 0 {
if s[i] < '0' || s[i] > '9' {
ans += string(s[i])
} else {
count += string(s[i])
// fmt.Printf("count: %v\n", count)
}
}

}

// fmt.Printf("ans: %v\n", ans)
return ans
}

394. 字符串解码
https://blog.jerrylee.me/2021/09/45fb9f609987.html
作者
Jerry Lee
发布于
2021年9月20日
许可协议