/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
String s
= "ex1 , [ex2 , ex3 ] , [ hh3 , rt5 , w3 [ bn7 ] ] , ex 4 , ex 4, [ex , ex ]"; List<String> res = splitWithCommaOutsideBrackets(s);
}
}
public static List
<String
> splitWithCommaOutsideBrackets
(String input
) { int BracketCount = 0;
int start = 0;
List<String> result = new ArrayList<>();
for(int i=0; i<input.length(); i++) {
switch(input.charAt(i)) {
case ',':
if(BracketCount == 0) {
result.add(input.substring(start, i).trim());
start = i+1;
}
break;
case '[':
BracketCount++;
break;
case ']':
BracketCount--;
if(BracketCount < 0)
return result; // The BracketCount shows the [ and ] number is unbalanced
break;
}
}
if(BracketCount > 0)
return result; // Missing closing ]
result.add(input.substring(start).trim());
return result;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVN0cmluZyBzID0gImV4MSAsIFtleDIgLCBleDMgXSAsIFsgaGgzICwgcnQ1ICwgdzMgWyBibjcgXSBdICwgZXggNCAsIGV4IDQsIFtleCAsIGV4IF0iOwoJCUxpc3Q8U3RyaW5nPiByZXMgPSBzcGxpdFdpdGhDb21tYU91dHNpZGVCcmFja2V0cyhzKTsKCQlmb3IgKFN0cmluZyB0OiByZXMpIHsKCQkJU3lzdGVtLm91dC5wcmludGxuKHQpOwoJCX0KCX0KCQoJcHVibGljIHN0YXRpYyBMaXN0PFN0cmluZz4gc3BsaXRXaXRoQ29tbWFPdXRzaWRlQnJhY2tldHMoU3RyaW5nIGlucHV0KSB7CgkgICAgaW50IEJyYWNrZXRDb3VudCA9IDA7CgkgICAgaW50IHN0YXJ0ID0gMDsKCSAgICBMaXN0PFN0cmluZz4gcmVzdWx0ID0gbmV3IEFycmF5TGlzdDw+KCk7CgkgICAgZm9yKGludCBpPTA7IGk8aW5wdXQubGVuZ3RoKCk7IGkrKykgewoJICAgICAgICBzd2l0Y2goaW5wdXQuY2hhckF0KGkpKSB7CgkgICAgICAgIGNhc2UgJywnOgoJICAgICAgICAgICAgaWYoQnJhY2tldENvdW50ID09IDApIHsKCSAgICAgICAgICAgICAgICByZXN1bHQuYWRkKGlucHV0LnN1YnN0cmluZyhzdGFydCwgaSkudHJpbSgpKTsKCSAgICAgICAgICAgICAgICBzdGFydCA9IGkrMTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICBjYXNlICdbJzoKCSAgICAgICAgICAgIEJyYWNrZXRDb3VudCsrOwoJICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgIGNhc2UgJ10nOgoJICAgICAgICAgICAgQnJhY2tldENvdW50LS07CgkgICAgICAgICAgICBpZihCcmFja2V0Q291bnQgPCAwKSAKCSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OyAvLyBUaGUgQnJhY2tldENvdW50IHNob3dzIHRoZSBbIGFuZCBdIG51bWJlciBpcyB1bmJhbGFuY2VkCgkgICAgICAgICAgICBicmVhazsKCSAgICAgICAgfQoJICAgIH0KCSAgICBpZihCcmFja2V0Q291bnQgPiAwKQoJICAgICAgICByZXR1cm4gcmVzdWx0OyAvLyBNaXNzaW5nIGNsb3NpbmcgXQoJICAgIHJlc3VsdC5hZGQoaW5wdXQuc3Vic3RyaW5nKHN0YXJ0KS50cmltKCkpOwoJICAgIHJldHVybiByZXN1bHQ7Cgl9Cn0=