定义了一个全局变量i指向字符数组当前操作的位置遇到字母直接append遇到数字则记录下来遇到左括号去递归遇到右括号则退出循环这里i在判断之前执行说明每次判断时i已经指向下一个元素了class Solution { int i 0; public String decodeString(String s) { char[] ch s.toCharArray(); return f(ch); } public String f(char[] ch){ StringBuilder s new StringBuilder(); int k 0; while(i ch.length){ char c ch[i]; i; if(Character.isLetter(c)){ s.append(c); }else if(Character.isDigit(c)){ k k * 10 (c - 0); }else if(c [){ String h f(ch); s.append(h.repeat(k)); k 0; }else{ break; } } return s.toString(); } }