leetcode刷题
394.字符串解码
示例 1:
输入:s = “3[a]2[bc]”
输出:“aaabcbc”
示例 2:
输入:s = “3[a2[c]]”------嵌套的!!!
输出:“accaccacc”
解题思路:因为涉及到嵌套的,所以就是先处理内再处理外,也就是先进后出,所以采用栈,,,,,遇到:[ 入栈 , 遇见: ] 出栈
注意事项:
1.入栈的时候,一定要清空原来的str和num,新建一个—cc
2.出栈的时候,str首先是当前的进行for循环的,之后才是str = str.pop().append(str)
3.注意循环的时候i=1开始
4.Stack numStack
5.Stack strStack
6.注意一些转换!!stringBuilder到string,是toString()
1.定义2个栈,一个是存放字符串的结果集strStack;一个是存放数字集numStack
2.定义2个stringbuilder,分别是加入到字符串的str、加入到数字的num
3.3[a2[c]] 无非是三种情况:
(1)如果是数字,则num.append()
(2)如果是[ ,则入栈;数字栈numStack中加入之前获取到的数字字符串num;字符串栈strStack中加入当前字符串str;***然后重新实例化str和num,用于里层的字符操作!!!!(如果没有新建地话,会出现很多次循环???如果没有清空地话,当前地str=ac了,循环地时候就是acac了)***
(3)如果是],则出栈;numStack数字栈出栈,出栈的数值int count = numStack.pop(),count是代表str循环的次数,for循环,然后不断地str.append(stringInner);最后strStack出战,然后拼接str:str = strStack.pop().append(str)
!!!注意:这里
(4)如果是字符;直接str.append();
package 左神.leetcode;
import java.util.Stack;
public class main14 {
public static void main(String[] args) {
String str = "3[a2[c]]"