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
class Solution {
public String decodeString(String s) {
int len = s.length();
LinkedList<Integer> multiStack = new LinkedList<>();
LinkedList<String> charStack = new LinkedList<>();

int multi = 0;
String str = "";
for (int i = 0; i < len; i++) {
if (s.charAt(i) >= '0' && s.charAt(i) <= '9') {
multi = multi * 10 + (s.charAt(i) - '0');
} else if ((s.charAt(i) >= 'a' && s.charAt(i) <= 'z') || (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z')) {
str += s.charAt(i);
} else if (s.charAt(i) == '[') {
multiStack.addLast(multi);
charStack.addLast(str);
multi = 0;
str = "";
} else if (s.charAt(i) == ']') {
str = charStack.pollLast()+str.repeat(multiStack.pollLast());
}
}

return str;
}
}
-------------本文结束感谢您的阅读-------------
可以请我喝杯奶茶吗