public String decodeString(String s) {
LinkedList<Character> characters = new LinkedList<>();
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (chars[i] == ']') {
//计算子串
ArrayList<Character> characters1 = new ArrayList<>();
while (!characters.isEmpty()) {
Character pop = characters.pop();
if (pop == '[') {
break;
}
characters1.add(pop);
}
//计算子串重复次数
ArrayList<Character> characters2 = new ArrayList<>();
while (!characters.isEmpty() && characters.peek() >= '0' && characters.peekFirst() <= '9') {
Character pop = characters.pop();
if (pop < '0' || pop > '9') {
break;
}
characters2.add(pop);
}
Collections.reverse(characters2);
String s2 = characters2.stream().map(String::valueOf).collect(Collectors.joining());
int value = 0;
if (!s2.isEmpty()) {
value = Integer.valueOf(s2);
}
//重新入栈
for (int j = 0; j < value; j++) {
for (int k = characters1.size() - 1; k >= 0; k--) {
characters.push(characters1.get(k));
}
}
} else {
characters.push(chars[i]);
}
}
Collections.reverse(characters);
Character[] characters1 = characters.toArray(new Character[0]);
String string = Arrays.stream(characters1).map(String::valueOf).collect(Collectors.joining());
return string;
}
LeetCode394. 字符串解码3[a]2[bc]
最新推荐文章于 2021-01-27 04:36:42 发布