腾讯2019年秋招第一大题解压字符串

我又来写bug了,不一定所有测试都通过,因为没咋测试,只通过测试示例系列。

不过是正儿八经的递归实现,不是用栈实现,记得题目上提示递归深度不能太深。

递归函数是fun(),不取名字系列。递归函数的作用是把 {}里的字符串给处理了然后返回给上层。k是str中 { 的下标,但str是私有变量。。

坚决不耦合。

绝不耦合。。

不耦合。。。

耦合。。。。

合。。。。。

。。。。。。

重要的事情说好几遍。。。。

// HABCBCABCBCABCBCD H{3:A{2:BC}}D
public class Test {
    public StringBuilder out=new StringBuilder("");
    private int c=0;
    private char []str;
    public Test(String str){
        this.str=str.toCharArray();
    }
    public String dezip(){
        for (int i = 0; i < str.length; i++) {
            String temp="";
            if(str[i]=='{'){
                temp=fun(i);
                i=c;
            }else{
                temp=Character.toString(str[i]);
            }
            out.append(temp);
        }
        return out.toString();
    }
    private String fun(int k){
        int l=0;
        for (int i = k+1; i < str.length; i++) {
            if(str[i]==':'){
                break;
            }
            l++;
        }
        String n=new String(str,k+1,l);
        int num=Integer.valueOf(n);
        StringBuilder o=new StringBuilder("");
        for (int i = k+l+1; i <str.length; i++) {
            if(str[i]=='{'){
                o.append(fun(i));
                i=c;
            }else if(str[i]=='}'){
                c=i;
                break;
            }else if(str[i]>='A'&&str[i]<='Z'){
                o.append(str[i]);
            }
        }
        StringBuilder o1=new StringBuilder("");
        for (int i = 0; i < num; i++) {
            o1.append(o);
        }
        return o1.toString();
    }
    public static void main(String[] args) {
        Test t=new Test("H1{3:A{2:BC}}D");
        System.out.println(t.dezip());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值