本文共 1462 字,大约阅读时间需要 4 分钟。
给定一个经过编码的字符串,返回它解码后的字符串。
编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。class Solution { int ptr; public String decodeString(String s) { LinkedListstk=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/