博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
394. Decode String
阅读量:5317 次
发布时间:2019-06-14

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

Given an encoded string, return it's decoded string.

The encoding rule is: k[encoded_string], where the encoded_string inside the square brackets is being repeated exactly k times. Note thatk is guaranteed to be a positive integer.

You may assume that the input string is always valid; No extra white spaces, square brackets are well-formed, etc.

Furthermore, you may assume that the original data does not contain any digits and that digits are only for those repeat numbers, k. For example, there won't be input like 3a or2[4].

Examples:

s = "3[a]2[bc]", return "aaabcbc".s = "3[a2[c]]", return "accaccacc".s = "2[abc]3[cd]ef", return "abcabccdcdcdef". 分析 : 用两个stack
public class Solution {    public String decodeString(String s) {        String res = "";        Stack
charStack = new Stack<>(); Stack
numStack = new Stack<>(); char sArray[] = s.toCharArray(); for(int i = 0 ; i < s.length(); i++){ if(sArray[i] > '0' && sArray[i] <= '9'){ // if num = 10,111... while int j = i; int count = 0; while(sArray[j] >= '0' && sArray[j] <= '9'){ //考虑大于1位数的情况 count = count * 10 + sArray[j] - '0'; j++; } i = j - 1; numStack.push(count); } else if(sArray[i] == '['){ charStack.push(res); res = ""; } else if(sArray[i] == ']'){ StringBuilder temp = new StringBuilder(charStack.pop()); int count = numStack.pop(); while(count > 0){ temp.append(res); count--; } res = temp.toString(); } else res += sArray[i]; } return res; }}

 

转载于:https://www.cnblogs.com/joannacode/p/6014638.html

你可能感兴趣的文章
特迷茫的大三时期
查看>>
Java中的深复制和浅复制
查看>>
绘制矩形:描边矩形imagerectangle()、填充矩形imagefilledrectangle()
查看>>
浙江省三级数据库考试
查看>>
eclipse导入导出工作空间配置
查看>>
UIPickerView 修改里面的字体大小
查看>>
4.3 day13 迭代器 生成器
查看>>
《Algorithms》第6章:Dynamic Programming 学习笔记
查看>>
1168: mxh对lfx的询问(前缀和+素数表)
查看>>
python中time类型,datetime类型的关系与互相转换
查看>>
【php】基础学习4
查看>>
递归神经网络(Recursive Neural Network, RNN)
查看>>
给wxPython事件处理函数传递参数
查看>>
csv文件批量导入数据到sqlite。
查看>>
实验三-有穷自动机的构造和识别
查看>>
Jdk在window环境下的安装与配置详解
查看>>
C# 两个窗体中相互切换的方法
查看>>
Individual Project - Word frequency program
查看>>
luogu P3924 康娜的线段树
查看>>
JAVA入门[18]-JdbcTemplate简单实例
查看>>