import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.*;
class Ideone
{
{
String input
= "Jim ate a [sandwich][ooh] with [pickles] and [dried [onions]] and ] [an[other] match] and more here"; List<String> between_balanced = getStrsBetweenBalancedSubstrings(input, '[', ']');
System.
out.
println("Result: " + between_balanced
); }
List<String> subTreeList = new ArrayList<String>();
int level = 0;
int lastCloseBracket= 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == markStart) {
level++;
if (level == 1) {
if (i != 0 && i!=lastCloseBracket && !s.substring(lastCloseBracket, i).trim().isEmpty()) {
subTreeList.add(s.substring(lastCloseBracket, i).trim());
}
}
} else if (c == markEnd) {
if (level > 0) {
level--;
lastCloseBracket = i+1;
}
}
}
if (lastCloseBracket != s.length() && !s.substring(lastCloseBracket).trim().isEmpty()) {
subTreeList.add(s.substring(lastCloseBracket).trim());
}
return subTreeList;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguKjsKCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlTdHJpbmcgaW5wdXQgPSAiSmltIGF0ZSBhIFtzYW5kd2ljaF1bb29oXSB3aXRoIFtwaWNrbGVzXSBhbmQgW2RyaWVkIFtvbmlvbnNdXSBhbmQgXSBbYW5bb3RoZXJdIG1hdGNoXSBhbmQgbW9yZSBoZXJlIjsKCQlMaXN0PFN0cmluZz4gYmV0d2Vlbl9iYWxhbmNlZCA9ICBnZXRTdHJzQmV0d2VlbkJhbGFuY2VkU3Vic3RyaW5ncyhpbnB1dCwgJ1snLCAnXScpOwoJCVN5c3RlbS5vdXQucHJpbnRsbigiUmVzdWx0OiAiICsgYmV0d2Vlbl9iYWxhbmNlZCk7Cgl9CglwdWJsaWMgc3RhdGljIExpc3Q8U3RyaW5nPiBnZXRTdHJzQmV0d2VlbkJhbGFuY2VkU3Vic3RyaW5ncyhTdHJpbmcgcywgQ2hhcmFjdGVyIG1hcmtTdGFydCwgQ2hhcmFjdGVyIG1hcmtFbmQpIHsKCQlMaXN0PFN0cmluZz4gc3ViVHJlZUxpc3QgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKCQlpbnQgbGV2ZWwgPSAwOwoJCWludCBsYXN0Q2xvc2VCcmFja2V0PSAwOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgaSsrKSB7CgkJCWNoYXIgYyA9IHMuY2hhckF0KGkpOwogICAgCQkJaWYgKGMgPT0gbWFya1N0YXJ0KSB7CiAgICAgICAgCQkJCWxldmVsKys7CiAgICAgICAgCQkJCWlmIChsZXZlbCA9PSAxKSB7CgkJCQkJaWYgKGkgIT0gMCAmJiBpIT1sYXN0Q2xvc2VCcmFja2V0ICYmICFzLnN1YnN0cmluZyhsYXN0Q2xvc2VCcmFja2V0LCBpKS50cmltKCkuaXNFbXB0eSgpKSB7CgkJCQkJCXN1YlRyZWVMaXN0LmFkZChzLnN1YnN0cmluZyhsYXN0Q2xvc2VCcmFja2V0LCBpKS50cmltKCkpOwoJCQkJCX0KCQkJCX0KCQkJfSBlbHNlIGlmIChjID09IG1hcmtFbmQpIHsKCQkJCWlmIChsZXZlbCA+IDApIHsgCgkJCQkJbGV2ZWwtLTsKCQkJCQlsYXN0Q2xvc2VCcmFja2V0ID0gaSsxOwoJCQkJfQogICAgCQkJfQoJCX0KCQlpZiAobGFzdENsb3NlQnJhY2tldCAhPSBzLmxlbmd0aCgpICYmICFzLnN1YnN0cmluZyhsYXN0Q2xvc2VCcmFja2V0KS50cmltKCkuaXNFbXB0eSgpKSB7CgkJCXN1YlRyZWVMaXN0LmFkZChzLnN1YnN0cmluZyhsYXN0Q2xvc2VCcmFja2V0KS50cmltKCkpOwkKCQl9CgkJcmV0dXJuIHN1YlRyZWVMaXN0OwoJfQp9