java代码按照指定格式解压缩字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java代码按照指定格式解压缩字符串相关的知识,希望对你有一定的参考价值。

import java.util.Stack;
// deHong hongJu oldJiang dP
public class RedChrysanthemum {
    private static String result = "";
    private static Stack<String> stack = new Stack<>();

    public static void main(String[] args) {
        //"4[b]3[ac]" 解压缩后为"bbbbacacac"
        // "2[d3[c]]" 解压缩后为 "dcccdccc"
        String str = "ef10[d3[cc]]";

       System.out.print(process(str));
    }

    private static String process(String str) {
        String in, out;
        int length = str.length();
        for (int i = 0; i < length; i++) {
            in = String.valueOf(str.charAt(i));
            // 不等于右括号的都进栈
            if (!in.equals("]")) {
                stack.push(in);
            } else {
                String tmpStr = "";
                String tar = "";
                out = stack.pop();
                // 待出栈的都是[字母数字,拿到数字拼上,蹦出一个,然后去下面的循环。
                // 如果连续多个字母,就会继续走这个循环,数字走下面。
                while (!out.equals("[")) {
                    tmpStr = out + tmpStr;
                    // pop出来一个,继续判断,是字母就再pop
                    out = stack.pop();
                }

                // 取数字 2[d3[c]]
                String numStr = "";
                while (stack.peek().charAt(0) >= ‘0‘ && stack.peek().charAt(0) <= ‘9‘) {
                    // 访问栈顶,是数字就拼接上,然后蹦走一个。
                    numStr = stack.peek() + numStr;
                    stack.pop();
                    if (stack.isEmpty()) {
                        break;
                    }
                }
                // 拿到左中括号左侧的数字
                int num = Integer.parseInt(numStr);
                for (int j = 0; j < num; j++) {
                    tar = tar + tmpStr;
                }
                stack.push(tar);
            }
        }

        while (stack.size() > 0) {
            String finalStr = stack.pop();
            result = finalStr + result;
        }
        return result;
    }
}

 

以上是关于java代码按照指定格式解压缩字符串的主要内容,如果未能解决你的问题,请参考以下文章

请大神帮忙解决一个用java解压缩一个zip压缩格式字节流中文内容乱码问题!

压缩后的JS代码怎样解压缩?

解压缩具有可变长度的未知序列化格式

java 编程思想 GZip(Zip) 格式压缩解压缩

java解压zip文件至指定文件夹

在java中压缩和解压缩7z文件