复制一个字符串多次
复制一个字符串多次
String repeat = temp.toString().repeat(count);
394. 字符串解码
核心思路:
加入最后一个 ],在弹出时候
- 先收集括号内所有的字母
- 弹出 [
- 收集数字
class Solution {
public String decodeString(String s) {
Deque<String> stack = new ArrayDeque<>();
for (char c : s.toCharArray()) {
if (c != ']'){
stack.push(c + "");
}else { // 当前插入了 ]
StringBuilder temp = new StringBuilder(); // 1. [] 中的字母
while (!"[".equals(stack.peek())){
temp.insert(0, stack.pop());
}
stack.pop(); //2. 弹出栈顶 [
// 3. 开始寻找前方的数字
StringBuilder temp2 = new StringBuilder();
while (!stack.isEmpty()){
String peek1 = stack.peek();
if (Character.isDigit(peek1.charAt(0))){ // 特殊:`2[abc]3[cd]ef` ==>abcabc已经化为一个整体字符串,使用 charAt(0),也可判断出不是数字
temp2.insert(0, peek1);
stack.pop();
}else {
break;
}
}
int count = Integer.parseInt(temp2.toString());
String repeat = temp.toString().repeat(count);
stack.push(repeat);
}
}
StringBuilder res = new StringBuilder();
while (!stack.isEmpty()){
res.insert(0, stack.pop());
}
return res.toString();
}
}