二刷hot100-394.字符串解码
定义了一个全局变量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(); } }