样例输入qw[2|w[1|e]]
样例输出qwwewe
package practice;
import java.util.Scanner;
public class practical {
public static StringBuffer compress(StringBuffer s){
StringBuffer ans=new StringBuffer(); //解码结果
StringBuffer temp=new StringBuffer();//[]子字符串
StringBuffer copys=new StringBuffer();//[]子字符串结果
if(s.indexOf("[")!=-1)//不是最后一个[]
{
temp.append(s.substring(s.indexOf("[")+1, s.lastIndexOf("]")));//获取子字符串最外层[]内的子字符串
//解码之后进行替换
s.replace(s.indexOf("["), s.lastIndexOf("]")+1, copys.append(compress(temp)).toString());
}
if(s.indexOf("|")==-1){ //全部解码之后
return s;
}
//解码
int i=0;
//获取重复次数
StringBuffer numbers=new StringBuffer();
while(s.charAt(i)!='|'){
numbers.append( s.charAt(i));
i++;
}
i++;
int ancount=Integer.parseInt(numbers.toString());
//对重复次数进行复制
for(int num=0;num<ancount;num++){
ans.append(s.substring(i));
}
return ans; //返回解码结果
}
public static void main(String args[]){
String s=new String();
StringBuffer stringBuffer=new StringBuffer();
Scanner input=new Scanner(System.in);
if(input.hasNext()){
s=input.next();
}
stringBuffer.append(s);
System.out.println(compress(stringBuffer));
}
}