给定一个经过编码的字符串,要求返回解码后的字符串
例如给定字符串s="3a2[bc]",解码后得到的字符串为"aaabcbc";
给定字符串s="3[a2[c]]",解码后得到的字符串为"accaccacc";
给定字符串s="2[abc]3[cd]ef",解码后得到的字符串为"abcabccdcdcdef"
public static String get(String str){
Stack<Integer> numStack=new Stack<>();
Stack<String> strStack=new Stack<>();
String result="";
char []chars= str.toCharArray();
int index=0;
while(index<chars.length) {
if (Character.isDigit(chars[index])) {
StringBuffer sb =new StringBuffer();
while(Character.isDigit(chars[index])){
sb.append(chars[index]);
index++;
}
numStack.push(Integer.parseInt(sb.toString()));
}else if(Character.isLetter(chars[index])){
StringBuffer sb =new StringBuffer();
while(Character.isLetter(chars[index])){
result=sb.append(chars[index]).toString();
index++;
}
}else if('['==chars[index]){
strStack.push(result);
result="";
index++;
}else if(']'==chars[index]){
Integer count=numStack.pop();
StringBuffer sb =new StringBuffer();
sb.append(strStack.pop());
for (int i = 0; i <count; i++) {
sb.append(result);
}
result=sb.toString();
index++;
}
}
return result;
}
public static void main(String[] args) {
System.out.println(get("3[a2[c]]"));
}