394. 字符串解码 - 力扣LeetCode自己用了递归解法题解就只写这一种吧。全局变量pos来记录当前位置直到处理完所有字符。如果当前字符是数字就计算 num如果当前字符是字母就直接拼接如果遇到“ [ ”说明接下来要拼接子串直接调用decode求出子串如果遇到“ ] ”直接跳出当前循环说明当前字符串已经拼接完成了直接返回。需要注意的一点是pos要在取完ch就进行pos如果放在循环结尾那么每次调用decode进去都是“ [ ”会一直新建子串导致错误。StringBuilder 的拼接性能比 String 要好因此只在最外层的 decodeString 里转换为 String 并返回其余所有地方都用的 StringBuilder。class Solution { int pos 0; public String decodeString(String s) { return decode(s).toString(); } public StringBuilder decode(String s) { StringBuilder res new StringBuilder(); int num 0; while(pos s.length()) { char ch s.charAt(pos); pos; if(ch 0 ch 9) { num num * 10 ch - 0; } else if(ch a ch z) { res.append(ch); } else if(ch [) { StringBuilder sub decode(s); for(int i 0; i num; i) { res.append(sub); } num 0; } else { break; } } return res; } }至于官解太长了看得头大懒得贴了。