腾讯校招笔试题目

样例输入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));
    }
}

猜你喜欢

转载自www.cnblogs.com/lihuidong/p/11373081.html