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;
    }
}
时间: 2024-10-05 06:38:38

java代码按照指定格式解压缩字符串的相关文章

使用java代码关闭指定端口的程序-windows下

转载请请在页首注明作者与出处 一:问题由史 今天遇到一个问题,就是在实现自动化灾备的时候,发现原有死掉的程序没有完全关闭,当然这都不是本文的重点,重点是这个时候,我得把它完全关闭,所以才有了这篇文章. 二:基础知识 2.1:java要怎么实现 java可以获取并删除JAVA虚拟机启动的应用,但是却并没有提供API获取操作系统中其它的进程的API. 但是java可以执行操作系统的脚本命令. 2.2:根据端口查找进程 windows中有这样的命令 netstat -ano 查看操作系统所有占用端口的

初学JAVA——代码练习(验证字符串结束字符)

package zhiZuo4; public class Last { public static void main(String[] args) { String A = "jasd"; String C = A.replace("sd","0"); int D = C.length(); System.out.println((C.lastIndexOf("0")==(D-1))); } }

使用Java代码和注解完成Spring配置

使用Java代码和注解完成Spring配置 使用Java代码和注解进行Spring的配置.个人理解: 使用Spring的时候可以使用XML文件配置,也可以使用Java代码配置.使用Java代码配置的时候,相当于使用Java类作为XML的配置文件,通过使用java代码创建bean实例,并通过java代码完成依赖的注入操作.当需要变更依赖注入时,可通过修改java代码实现. 使用注解配置的时候,个人理解存在两种方式第一种是注解+XML形式,第二种是Java代码+注解形式.使用Java+注解的形式,相

jQuery实现的截取指定长度字符串代码

jQuery实现的截取指定长度字符串代码:截取字符串是常有的操作,可以说非常的频繁,几乎任何有新闻列表形式的站点都会有此操作,下面就是一段能够实现此功能的代码实例,直接套用就可以了,希望能够大家带来一定帮助.代码如下: <!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>批量注册事件处理函数-蚂蚁部落</title> <style type="text

java批量修改指定文件夹下所有后缀名的文件为另外后缀名的代码

原文:java批量修改指定文件夹下所有后缀名的文件为另外后缀名的代码 源代码下载地址:http://www.zuidaima.com/share/1550463660264448.htm 今天有个需求,想把某个文件夹下所有后缀名为jsp的更改为ftl,本来想用bat实现对bat的高级语法也不太了解,后来发现还需要递归遍历所有的子文件夹,所以用java实现了一个功能一样的代码,有需要的牛人可以下载修改为自己想要的. 这样可以兼容windows和linux. package com.zuidaima

如何使用Java代码获取文件、文件流或字符串的编码方式

今天通过网络资源研究了一下如何使用Java代码获取文件.文件流或字符串的编码方式,现将代码与大家分享: package com.ghj.packageoftool; import info.monitorenter.cpdetector.io.ASCIIDetector; import info.monitorenter.cpdetector.io.ByteOrderMarkDetector; import info.monitorenter.cpdetector.io.CodepageDete

截取指定长度字符串长度代码实例

截取指定长度字符串长度代码实例:字符串的长度在默认状态下往往不能够满足需求,比如新闻列表新闻标题的长度,如果过长往往会引起换行,影响美观度,进而一项用户体验,所以需要根据需要截取字符串长度,下面就分享两端能够实现此功能的代码,希望对大家有所帮助.代码示例如下:一.CSS方式:html代码: <div class="cutText">蚂蚁部落欢迎您,只有奋斗才会有美好的明天!</div> CSS代码: .cutText{ width:150px; height:2

如何判断一个字符串是java代码还是英文单词?

考虑如下的两个字符串: 1. for(int i=0; i < b.size();i++){ 2. do something in English(not necessary to be a sentence). 我们很容易就看出来,第一个是java代码,第二个则是英文句子.那么计算机程序有事如何区分这两者的呢? java code可能不可解析,因为它是一段完整的方法(或声明或表达式),下面提供了这个问题的解决方法.有时,Java代码和英文单词并没有完全划清楚的界限,这中解决方案并不是100%的

Kettle变量和自定义java代码的实例应用

1  kettle.properties参数配置数据源连接和FTP连接 由于测试环境和生产环境中数据库连接FTP等配置会在部署过程中变更,所以预先定义成配置项,在配置文件中修改,这样测试和发布将会变得简单,下面以数据库为例说明这类配置的使用. (1)      首先要找到配置文件,不同的操作系统路径也不一样,本人用win7进行开发,配置文件的路径为"C:\Users\chenpeng\.kettle\kettle.properties",如下: (2)      配置文件中的具体配置如