复制一个字符串多次

复制一个字符串多次

String repeat = temp.toString().repeat(count);

394. 字符串解码

核心思路:
加入最后一个 ],在弹出时候

  1. 先收集括号内所有的字母
  2. 弹出 [
  3. 收集数字
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();
	}
}
posted @ 2023-10-14 00:09  爱新觉罗LQ  阅读(20)  评论(0编辑  收藏  举报