博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串解码
阅读量:3958 次
发布时间:2019-05-24

本文共 1462 字,大约阅读时间需要 4 分钟。

题目来源

题目描述

给定一个经过编码的字符串,返回它解码后的字符串。

编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。
在这里插入图片描述

思路分析

在这里插入图片描述

class Solution {
int ptr; public String decodeString(String s) {
LinkedList
stk=new LinkedList<>(); ptr=0; while(ptr
sub=new LinkedList
(); while(!"[".equals(stk.peekLast())){
sub.addLast(stk.removeLast()); } Collections.reverse(sub); stk.removeLast(); //此前栈顶数字为当前sub该出现的次数 int repTime=Integer.parseInt(stk.removeLast()); StringBuffer t=new StringBuffer(); String o=getString(sub); //构造字符串 while(repTime-->0){
t.append(o); } //将构造好的字符串入栈 stk.addLast(t.toString()); } } return getString(stk); } public String getDigits(String s){
StringBuffer sb=new StringBuffer(); while(Character.isDigit(s.charAt(ptr))){
sb.append(s.charAt(ptr++)); } return sb.toString(); } public String getString(LinkedList
c){
StringBuffer sb=new StringBuffer(); for(String s:c){
sb.append(s); } return sb.toString(); }}

转载地址:http://tnlzi.baihongyu.com/

你可能感兴趣的文章
有序链表的合并(数据结构---单链表)
查看>>
栈实现(数据结构---数组,链表 C实现)
查看>>
POJ3903(dp,最长上升子序列,最基础题)
查看>>
POJ1836-Alignment(最长上升子序列)
查看>>
POJ 1251 Jungle Roads(最小生成树简单题)
查看>>
HDU 1690---Bus System(Floyd模板题+合理定义INF)
查看>>
POJ 2240---Arbitrage(Floyd的dp思想)
查看>>
Dijkstra算法---模板
查看>>
POJ 3680(费用流)
查看>>
校oj10532: 生成字符串(dp,最优状态转移)
查看>>
平衡二叉树(AVL树)
查看>>
POJ1521---哈夫曼编码,求最优WPL
查看>>
POJ---2010(Moo University - Financial Aid,优先队列)
查看>>
POJ---3662(Telephone Lines,最短路+二分*好题)
查看>>
L2-007. 家庭房产(并查集)
查看>>
L2-016. 愿天下有情人都是失散多年的兄妹(搜索)
查看>>
L2-019. 悄悄关注
查看>>
POJ 3468 A Simple Problemwith Integers(SplayTree入门题)
查看>>
营业额统计 HYSBZ - 1588 (伸展树简单应用)
查看>>
HDU 1890 Robotic Sort(伸展树---反转应用)
查看>>