思路
使用递归-找出括号里的内容再继续放入decode,用count计数确认是最外层“【”“】”
代码
class Solution {
public String decodeString(String s) {
StringBuilder sb = new StringBuilder();
for(int i=0;i<s.length();i++){
if(Character.isDigit(s.charAt(i))){
int begin_number = i;
while(s.charAt(i)!='['){
i++;
}
int number = Integer.valueOf(s.substring(begin_number,i));
int begin_str = i+1;
int count = 1;
i++;
while(count !=0){
if(s.charAt(i)=='['){
count++;
}
if(s.charAt(i)==']'){
count--;
}
i++;
}
i--;
String sub = decodeString(s.substring(begin_str,i));//在这递归
for(int j=0;j<number;j++){
sb.append(sub);
}
}
else{
sb.append(s.charAt(i));
}
}
return sb.toString();
}
}
网友评论