LeetCode 394. 字符串解码
时间:2020-05-28
本文章向大家介绍LeetCode 394. 字符串解码,主要包括LeetCode 394. 字符串解码使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
https://leetcode-cn.com/problems/decode-string/
这个题做过很多次了,没啥难度,利用栈存储前面出现过的操作就可以了。
/** * 执行用时 : * 1 ms * , 在所有 Java 提交中击败了 * 90.09% * 的用户 * 内存消耗 : * 37.8 MB * , 在所有 Java 提交中击败了 * 7.69% * 的用户 * @param s * @return */ public String decodeString(String s) { LinkedList<String> stack = new LinkedList<>(); int num = 0; StringBuilder sb = new StringBuilder(); for(int i = 0; i < s.length(); i++){ char c = s.charAt(i); //遇到数字就将它累加起来,防止出现个位数以上的数字。同时将统计字符串的sb强制写入栈中刷新缓存。 if(c >= '0'&& c <= '9'){ if(sb.length() != 0){ stack.add(new String(sb)); sb = new StringBuilder(); } num = num * 10 + (c - '0'); //遇到小写或者大写字母就直接统计 }else if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')){ sb.append(c); //遇到[,首先先判断是否有数字生成,如果有就强制将它写入栈中然后刷新。然后再把自己写入到栈中 }else if(c == '['){ if(num != 0){ stack.add(String.valueOf(num)); num = 0; } stack.add(String.valueOf(c)); }else if (c == ']'){ //头插法直到遇到[,表示这个阶段需要重复的字符串已经寻找完毕 while(!"[".equals(stack.getLast())){ sb.insert(0,stack.removeLast()); } String word = new String(sb); sb = new StringBuilder(); //移除[ stack.removeLast(); //获得重复次数 int times = Integer.parseInt(stack.removeLast()); //将word重复times次 stack.add(word.repeat(times)); } } //使用头插法将栈中元素拿回出来,利用sb可以防止最后出现只重复一次的字符,例如示例3 while(!stack.isEmpty()){ sb.insert(0,stack.removeLast()); } return sb.toString(); }
原文地址:https://www.cnblogs.com/ZJPaang/p/12978722.html
- 无限级分类(非递归算法/存储过程版/GUID主键)完整数据库示例_(2)插入记录
- Centos中yum方式安装java
- 微信小程序新革命催生新物种新物种带来大红利!玩转行业新玩法
- 无限级分类(非递归算法/存储过程版/GUID主键)完整数据库示例_(3)删除记录
- 部署Zipkin分布式性能追踪日志系统的操作记录
- 无限级分类(非递归算法/存储过程版/GUID主键)完整数据库示例_(4)显示记录
- Android 2.x中使用actionbar - Actionbarsherlock (2)
- python读txt和xml
- 让Jexus支持高并发请求的优化技巧
- 数据压缩算法LZO (C#)
- Html之初体验
- 基于Wolfpack开发业务监控系统
- Android 2.x中使用actionbar - Actionbarsherlock
- Python-操作Memcache、Redis、RabbitMQ、
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 字典序???你是啥
- 【特征工程】时序特征挖掘的奇技淫巧
- 【Hive】Hive 的基本认识
- 《Nacos系列》之注册中心
- 《Nacos系列》之持久化
- 垃圾收集器详解及参数配置
- 《Nacos系列》之安装与启动
- 盘点 | Python自带的那些数据集
- 使用shuttle实现bytom上跨链资产交换
- (三)Mybatis-Plus代码生成器
- 【Code】关于 GCN,我有三种写法
- MySQL允许在唯一索引字段中添加多个NULL值
- [OHIF-Viewers]医疗数字阅片-医学影像-中间插播一下-es6-使用const加箭头函数声明函数相对于function声明函数有什么好处?
- 日志切割工具-Logrotate实现nginx日志切割
- JVM元数据区