Decode String
s = "3[a]2[bc]", return "aaabcbc".
s = "3[a2[c]]", return "accaccacc".
s = "2[abc]3[cd]ef", return "abcabccdcdcdef".class Solution {
public String decodeString(String s) {
StringBuilder str = new StringBuilder(s);//空间效率
int[] i = new int[1];//传引用
i[0] = 0;
return decodeString(s, i);
}
String decodeString(StringBuilder s, int[] i){
// && s.charAt(i[0]) != ']'
// int n = 0;
StringBuilder ret = new StringBuilder();
while(i[0] < s.length()){
if(Character.isLetter(s.charAt(i[0]))){
ret.append(s.charAt(i[0] ++));
}else if(Character.isDigit(s.charAt(i[0]))){
int n = 0;
while(Character.isDigit(s.charAt(i[0]))){
n = n * 10 + s.charAt(i[0] ++) - '0';//不是+=这里
}
i[0] ++; //"["
String ds = decodeString(s, i);
while(n -- > 0){
ret.append(ds);
}
}else if(s.charAt(i[0]) == ']'){
i[0] ++;
return ret.toString();
}
}
return ret.toString();
}
}Last updated