import java.util.HashMap;
import java.util.Map;
import java.util.Stack;
/**
* Given an sequence of brackets , confirm if sequence is valid
* @author PRATEEK
*/
class ValidateBrackets {
private static Map
<Character,Character
> hash
= new HashMap
<>();
static {
hash.put('{','}');
hash.put('[',']');
hash.put('(',')');
}
/**
* Sub-routine to validate the sequence of brackets
* @param s
* @return
*/
public static boolean validate
(String s
){ char[] arr = s.toCharArray();
Stack<Character> stack = new Stack<>();
{
switch (c) {
case '[':
case '{':
case '(':
stack.push(c);
break;
case ']':
case '}':
case ')':
{
if(hash.values().contains(c))
{
if(!stack.isEmpty() && hash.get(stack.peek())==c)
stack.pop();
else if(stack.isEmpty())
return false;
}
}
break;
default:
break;
}
}
return stack.isEmpty();
}
public static void main
(String[] args
) { boolean isValid = validate(s);
System.
out.
println("input: "+s
); System.
out.
println("output: " +isValid
); }
}
aW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwppbXBvcnQgamF2YS51dGlsLk1hcDsKaW1wb3J0IGphdmEudXRpbC5TdGFjazsKCi8qKgogKiBHaXZlbiBhbiBzZXF1ZW5jZSBvZiBicmFja2V0cyAsIGNvbmZpcm0gaWYgc2VxdWVuY2UgaXMgdmFsaWQKICogQGF1dGhvciBQUkFURUVLCiAqLwpjbGFzcyBWYWxpZGF0ZUJyYWNrZXRzIHsKCQoJcHJpdmF0ZSBzdGF0aWMgTWFwPENoYXJhY3RlcixDaGFyYWN0ZXI+IGhhc2ggPSBuZXcgSGFzaE1hcDw+KCk7CgkKCXN0YXRpYyB7CgkJaGFzaC5wdXQoJ3snLCd9Jyk7CgkJaGFzaC5wdXQoJ1snLCddJyk7CgkJaGFzaC5wdXQoJygnLCcpJyk7Cgl9CgkKCS8qKgoJICogU3ViLXJvdXRpbmUgdG8gdmFsaWRhdGUgdGhlIHNlcXVlbmNlIG9mIGJyYWNrZXRzCgkgKiBAcGFyYW0gcwoJICogQHJldHVybgoJICovCglwdWJsaWMgc3RhdGljIGJvb2xlYW4gdmFsaWRhdGUoU3RyaW5nIHMpewoJCWNoYXJbXSBhcnIgPSBzLnRvQ2hhckFycmF5KCk7CgkJCgkJU3RhY2s8Q2hhcmFjdGVyPiBzdGFjayA9IG5ldyBTdGFjazw+KCk7CgkJZm9yKENoYXJhY3RlciBjOmFycikKCQl7CgkJCSAgc3dpdGNoIChjKSB7CgkJCWNhc2UgJ1snOgoJCQljYXNlICd7JzoKCQkJY2FzZSAnKCc6CgkJCQlzdGFjay5wdXNoKGMpOwoJCQkJYnJlYWs7CgkJCQkKCQkJY2FzZSAnXSc6CgkJCWNhc2UgJ30nOgoJCQljYXNlICcpJzoKCQkJewoJCQkJaWYoaGFzaC52YWx1ZXMoKS5jb250YWlucyhjKSkKCQkJCXsKCQkJCQlpZighc3RhY2suaXNFbXB0eSgpICYmIGhhc2guZ2V0KHN0YWNrLnBlZWsoKSk9PWMpCgkJCQkJCXN0YWNrLnBvcCgpOwoJCQkJCWVsc2UgaWYoc3RhY2suaXNFbXB0eSgpKQoJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCQkKCQkJfQoJCQkJYnJlYWs7CgkJCWRlZmF1bHQ6CgkJCQlicmVhazsKCQkJfQoJCX0KCQlyZXR1cm4gc3RhY2suaXNFbXB0eSgpOwoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CgkJU3RyaW5nIHM9ICJ7KCl9W10iOwoJCWJvb2xlYW4gaXNWYWxpZCA9IHZhbGlkYXRlKHMpOwoJCVN5c3RlbS5vdXQucHJpbnRsbigiaW5wdXQ6ICIrcyk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJvdXRwdXQ6ICIgK2lzVmFsaWQpOwoJfQp9