1.
class Solution {
int index=0;
public String decodeString(String s) {
return analysis(s);
}
public String analysis(String s){
StringBuilder sb = new StringBuilder();
int num=0;
String temp;
while(index<s.length()){
if(s.charAt(index)>='0'&&s.charAt(index)<='9'){
num=num*10+s.charAt(index)-'0';
}else if(s.charAt(index)=='['){
index++;
temp = analysis(s);
while(num-->0) sb.append(temp);
num=0;
}else if(s.charAt(index)==']') break;
else sb.append(s.charAt(index));
index++;
}
return sb.toString();
}
}
举两个例子 3[a2[b]] 3[a]2[b]
用的递归思想如果遇到“[” ,就把a2[b] 传进去处理,他会返回一个abb,把abb循环3遍就好了
如果是3[a]2[b] 呢? 我就是在这迷住了,注意:在3[ 这里要递归 a]2[b]
在a]2[b]这一层循环的时候,遇见a后的]就return了,回到3[这一层循环了,他们始终操作的是同一个index,就到了2,所以num要置为0