leetcode-394.字符串解码
394. 字符串解码
public String decodeString(String s) { Stack<Character> stack = new Stack<>(); for(char c : s.toCharArray()){ if(c != ']'){//如果不是']'把所有字符加入 stack.push(c); }else{// 如果遇到']'说明 c[letter以及全部输入到栈中了 StringBuilder sb = new StringBuilder(); while(!stack.isEmpty() && Character.isLetter(stack.peek())){//如果遇到了']',则把栈里所有 字符 都插入到sb中 sb.insert(0, stack.pop()); } String letters = sb.toString();//sb转成字符串 stack.pop(); // 去除'[' sb = new StringBuilder();//重置StringBuilder准备记录数字 while(!stack.isEmpty() && Character.isDigit(stack.peek())){//如果遇到了数字,则记录数字,别忘了数字有位数,个位十位百位千位,不只是一位数字,所有数字都加入到sb中 sb.insert(0, stack.pop()); } int count = Integer.valueOf(sb.toString());//把字符串转换为整数 //根据count次数,拆除[],再塞入到栈里去,由于stack只能放char字符,所以这里都拆成字符一个个放进去 while(count != 0){ for(char r : letters.toCharArray()){ stack.push(r); } count --; } } } StringBuilder res = new StringBuilder(); //取出栈中所有字符 while(!stack.isEmpty()){ res.insert(0, stack.pop()); } return res.toString(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律