leetcode 394. 字符串解码 java
时间:2019-10-24
本文章向大家介绍leetcode 394. 字符串解码 java,主要包括leetcode 394. 字符串解码 java使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目:
给定一个经过编码的字符串,返回它解码后的字符串。
编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。
你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。
此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。
示例:
s = "3[a]2[bc]", 返回 "aaabcbc".
s = "3[a2[c]]", 返回 "accaccacc".
s = "2[abc]3[cd]ef", 返回 "abcabccdcdcdef".
解题:
class Solution { public String decodeString(String s) { Stack<String> resStack = new Stack<>();//记录当前结果字符串 Stack<Integer> repeatNum = new Stack<>(); int rnum = 0; String res = "";//需要重复的字符串 for (int i = 0; i < s.length(); i++) { char ch = s.charAt(i); if (ch == '[') { resStack.push(res); repeatNum.push(rnum); res = ""; rnum = 0; } else if (ch == ']') { int n = repeatNum.pop(); String tmp = resStack.pop(); res = tmp + repeatString(res, n); } else if (ch >= '0' && ch <= '9') { //char 转成 int 是基础操作, 要牢记 rnum = 10 * rnum + ch - '0'; } else { res = res + ch; } } return res; } private String repeatString(String str, int n) { String curr = ""; for (int i = 0; i < n; i++) curr += str; return curr; } }
原文地址:https://www.cnblogs.com/yanhowever/p/11731170.html
- sql server 2008 操作数据表
- sql server 使用函数辅助查询
- sql server存储过程编程
- sql server 2008 数据库的完整性约束
- sql server T-SQL 基础
- sql server 触发器
- T-SQL 查询、修改数据表
- sql server 事务处理
- Android P专区免费开放 -- 同样的Android,不同的体验
- YJango:TensorFlow中层API Datasets+TFRecord的数据导入
- CentOS7上ElasticSearch安装填坑记
- ASP.NET Core 阶段性总结
- Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程案例演示
- C# 窗体常用API函数 应用程序窗体查找
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 详解在Linux中清空或删除大文件内容的5种办法
- php和redis实现秒杀活动的流程
- CentOS 7中搭建NFS文件共享存储服务的完整步骤
- PHP检测一个数组有没有定义的方法步骤
- Yii2.0框架模型多表关联查询示例
- Yii2.0框架模型添加/修改/删除数据操作示例
- thinkphp5.1框架容器与依赖注入实例分析
- 在CentOS VPS上通过SSH安装 MySQL的办法图解
- 详解PHP 7.4 中数组延展操作符语法知识点
- linux下安装boost库的完整步骤记录
- Python图像处理二值化方法实例汇总
- 利用Python实现斐波那契数列的方法实例
- Python如何实现大型数组运算(使用NumPy)
- 因str_replace导致的注入问题总结
- laravel框架中间件 except 和 only 的用法示例