java实战字符串+栈5:解码字符
题目:
有形如 (重复字符串)<重复次数n> 的片段,解码后相当于n个重复字符串连续拼接在一起,求展开后的字符串。

求解:
public static String zipString(String str) {
if (str == null || str.length() == 0) {
return "";
}
Stack<String> sta = new Stack<>();
str = str.replaceAll("<", "").replaceAll(">", ""); // 将<>全部替换掉
for (int i = 0; i < str.length(); i++) {
char cha = str.charAt(i);
if (!(cha <= '9' && cha >= '1')) {
sta.push("" + cha);
} else {
int tem = cha - '0'; // char型转整形
Stack<String> stack = new Stack<>(); // 建立一个临时栈,存储每个小括号中的元素
while (true) {
String sss = sta.pop();
if (sss.equals(")")) {
continue;
} else if (sss.equals("(")) {
break;
} else {
stack.push(sss);
}
}
for (int k = 0; k < tem; k++) { // 遇到数字,前面必然有一个括号,
Stack<String> newSta = (Stack<String>) stack.clone(); // 注意拷贝一个栈给另一个栈,不能直接用stackA=stackB
while (!newSta.isEmpty()) {
sta.push(newSta.pop());
}
}
}
}
StringBuffer bf = new StringBuffer();
while (!sta.isEmpty()) {
String strTem = sta.pop();
if (!strTem.equals("(") && !strTem.equals(")")) {
bf.append(strTem);
}
}
return bf.reverse().toString(); // 出栈的元素是相反的,需要转换一次
}
java实战字符串+栈5:解码字符的更多相关文章
- 三种java 去掉字符串中的重复字符函数
三种java 去掉字符串中的重复字符函数 public static void main(string[] args) { system.out.println(removerepeatedchar( ...
- Java 求字符串中出现频率最高字符
前段时间接触的这个题目,大体理解了,还有些小地方仍待进一步品味,暂且记下. import java.util.ArrayList; import java.util.Arrays; import ja ...
- JAVA实现字符串反转,借助字符数组实现
public static String reverseStr(String str) { int len = str.length(); char ch[] = str.toCharArray(); ...
- Java 去除字符串前后指定的字符
一.去除字符串中的中文字符. /** * 去除字符串中的中文字符 * * 示例:brandName值为: 中国ABCD88深圳 * * 返回: ABCD88 * * @param brandName ...
- JAVA 去除字符串前后的指定字符
为了显示效果更好,我们可以将多余的字符去掉,代码如下: /** *去掉字符串前后的指定字符 */ public static String trimBothChars(String str, Stri ...
- 使用Java判断字符串中的中文字符数量
Java判断一个字符串str中中文的个数,经过总结,有以下几种方法(全部经过验证),可根据其原理判断在何种情况下使用哪个方法: 1. char[] c = str.toCharArray(); for ...
- Java检查字符串是否包含中文字符
转自:https://blog.csdn.net/zhanghan18333611647/article/details/80038629 强烈推荐一个大神的人工智能的教程:http://www.ca ...
- java 删除字符串中的特定字符
/** * Delete any character in a given String. * @param inString the original String * @param charsTo ...
- java 验证字符串是否包含中文字符
中文的模式:"[\\u4e00-\\u9fa5]|\\\\u" 例子: private static final Pattern p = Pattern.compile(" ...
- Java获取字符串里面的重复字符
public static void main(String[] args) { String word="天地玄黄宇宙洪荒" + "日月盈昃辰宿列张" + & ...
随机推荐
- Swoole从入门到入土(17)——WebSocket服务器[成员函数与配置选项]
这一节,我们重点了解websocket server的成员函数以及相关的配置选项. 1.成员函数 push:向 WebSocket 客户端连接推送数据,长度最大不得超过 2M. Swoole\WebS ...
- Laravel入坑指南(9)——数据迁移与填充
当我们开发完成一个(小)项目,发布到线上时,我们需要将本地数据库迁移到服务器上,并且填充初始化数据.而Laravel框架规定了一套完善的数据迁移与填充机制. 在官网中分别介绍了以下四个命令: php ...
- Mqtt开发笔记:Mqtt服务器搭建
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- 【Azure Redis 缓存】Lettuce 连接到Azure Redis服务,出现15分钟Timeout问题
问题描述 在Java应用中,使用 Lettuce 作为客户端SDK与Azure Redis 服务连接,当遇见连接断开后,长达15分钟才会重连.导致应用在长达15分的时间,持续报错Timeout 问题解 ...
- 【Azure 应用服务】"App Service"如何能判断自身网路没有问题?
问题描述 当创建了一个App Service服务后,如何能判断服务自身网络链路路没有问题? 如果是用VM,通常用Ping可以判断.但是"网站应用App Service" 的Kudu ...
- 利用微软官方API实现Office文档的在线预览功能
随着互联网时代的飞速发展,越来越多的工作开始依赖于云端服务,我们的办公方式也逐渐发生了翻天覆地的变化.在这种背景下,急需一种无需本地安装Office软件,就能快速查看和共享Word.PowerPoin ...
- 谈谈在incubator-dolphinscheduler 中为啥不能及时看到python任务输出的print日志
一.incubator-dolphinscheduler 中如何获取shell类型的节点或者python类型的节点任务的日志 1.在org.apache.dolphinscheduler.server ...
- Sagas论文原文读后总结
一.引子 分布式事务组件seata最近社区很活跃,刚好公司有对接seata的计划.刚好借此机会,彻底了解下seata的价值.其中有一个比较特殊的模式叫SAGA模式,听起来就很懵逼,按照官网的介绍起源于 ...
- Python实现企业微信自动打卡程序二:跳过节假日,随机打卡时间,定时任务,失败通知
一.介绍 在上节 Python实现企业微信上下班自动打卡程序内容之后,我们继续优化自动打卡程序.接下来增加如下内容: 实现打卡时间随机范围 处理节假日不打卡的情况 实现定时调度打卡 打卡成功或失败通知 ...
- class cl表示 汇聚 集合 ss表示 阴性 这里表示抽象
class cl表示 汇聚 集合 ss表示 阴性 这里表示抽象