2
public String decodeString(String s) {4
int bb = s.indexOf('['); // location of beginning bracket5
int nbb = s.indexOf('[', bb + 1); // location of next beginning bracket6
int eb = s.indexOf(']'); // location of ending bracket8
int n = 0; // number of times to repeat9
int nl = 1; // number of digits for n10
char nd; // next digit12
String insert = ""; // repeated string13
String end = ""; // remainder of string after repeated portion15
while (bb != -1) { // while the string contains a beginning bracket18
&& nbb > bb) { // while the next beginning bracket is before the ending bracket19
bb = nbb; // update location of beginning bracket20
nbb = s.indexOf('[', bb + 1); // update location of next beginning bracket23
nl = 1; // reset length of n24
while (bb - nl >= 0) { // while there are characters in front of the beginning bracket25
nd = s.charAt(bb - nl); // next digit26
if (nd <= '9' && nd >= '0') { // if next digit is an integer27
n += (int) (nd - '0') * Math.pow(10, nl - 1); // update value of n28
nl++; // increment length of n29
} else break; // not an integer32
insert = s.substring(bb + 1, eb); // set repeated string33
end = s.substring(eb + 1); // set remainder of string34
s = s.substring(0, bb - nl + 1); // remove everything after the digits37
s += insert; // add repeated string n times40
s += end; // add remainder of string42
bb = s.indexOf('['); // new location of beginning bracket43
nbb = s.indexOf('[', bb + 1); // new location of next beginning bracket44
eb = s.indexOf(']'); // new location of ending bracket