Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Scanner;
- import java.util.Stack;
- public class BalancedParentheses {
- public static void main(String[] args) {
- Scanner input = new Scanner(System.in);
- input.nextLine(); // skip first unecessary line.
- while (input.hasNextLine()) {
- System.out.println(isBalanced(input.nextLine()) ? "YES" : "NO");
- }
- }
- private static boolean isBalanced(String input) {
- int parenCounter = 0;
- int curlyCounter = 0;
- int braceCounter = 0;
- Stack<Character> openers = new Stack<>();
- Map<Character, Character> parenMap = new HashMap<>();
- parenMap.put('(', ')');
- parenMap.put('[', ']');
- parenMap.put('{', '}');
- for (int i = 0; i < input.length(); i++) {
- if (input.charAt(i) == '(') {
- parenCounter++;
- openers.push('(');
- } else if (input.charAt(i) == ')') {
- parenCounter--;
- if (!matchesLast(')', openers.pop(), parenMap)) {
- return false;
- }
- } else if (input.charAt(i) == '[') {
- braceCounter++;
- openers.push('[');
- } else if (input.charAt(i) == ']') {
- braceCounter--;
- if (!matchesLast(']', openers.pop(), parenMap)) {
- return false;
- }
- } else if (input.charAt(i) == '{') {
- curlyCounter++;
- openers.push('{');
- } else {
- curlyCounter--;
- if (!matchesLast('}', openers.pop(), parenMap)) {
- return false;
- }
- }
- if (parenCounter < 0 || curlyCounter < 0 || braceCounter < 0) {
- return false;
- }
- }
- return parenCounter == 0 && curlyCounter == 0 && braceCounter == 0;
- }
- private static boolean matchesLast(char paren, char lastOpener, Map<Character, Character> parenMap) {
- return paren == parenMap.get(lastOpener);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement