/*** 394* 给定一个经过编码的字符串,返回它解码后的字符串。* <p>* 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。* <p>* 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。* <p>* 此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。* <p>* 示例:* <p>* 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) {if(s == null ){return "";}int[] index = new int[]{0};return makeString(s,index);}private String makeString(String str,int[] index){if(str == null || str.length() == 0 || index[0] >= str.length()){return "";}StringBuilder strNum = new StringBuilder();StringBuilder strSub = new StringBuilder();for(;index[0]<str.length();index[0]++){char ch = str.charAt(index[0]);if(ch >= '0' && ch <= '9'){strNum.append(ch);}else if(ch=='['){index[0]++;String temp = makeString(str,index);int time =0;if(strNum != null && strNum.length()>0){time = Integer.valueOf(strNum.toString());}int i=0;do{strSub.append(temp);i++;}while (i<time);strNum.delete(0,strNum.length());}else if(ch == ']'){//index++;break;}else{strSub.append(ch);}}return strSub.toString();}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。