desislava_topuzakova

05. Balanced Parentheses

Sep 16th, 2021
971
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package StackAndQueue;
  2.  
  3. import java.util.ArrayDeque;
  4. import java.util.Collections;
  5. import java.util.List;
  6. import java.util.Scanner;
  7.  
  8. public class demo {
  9.     public static void main(String[] args) {
  10.         Scanner scanner = new Scanner(System.in);
  11.         //Последната отворена да съвпада с първата затворена
  12.         String input = scanner.nextLine(); //"{[()]}"
  13.  
  14.         ArrayDeque<Character> openBrackets = new ArrayDeque<>();
  15.         boolean areBalanced = false; //дали скобите са ни балансирани
  16.         for (int index = 0; index < input.length(); index++) {
  17.             char currentBracket = input.charAt(index);
  18.             //проверка дали скобата е отворена -> {, [, (
  19.             if (currentBracket == '(' || currentBracket == '{' || currentBracket == '[') {
  20.                 openBrackets.push(currentBracket);
  21.             } //проверка дали скобата е затворена
  22.             else if (currentBracket == ')' || currentBracket == '}' || currentBracket == ']') {
  23.                 //currentBracket -> затворена скоба
  24.                 //проверка дали тази затворена скоба съвпада с послендата отворена
  25.                 if (openBrackets.isEmpty()) { //нямам отворени скоби
  26.                     areBalanced = false;
  27.                     break;
  28.                 }
  29.                 char lastOpenBracket = openBrackets.pop(); //последната отворена скоба
  30.                 //отворена ( и затворена )
  31.                 if (lastOpenBracket == '(' && currentBracket == ')') {
  32.                     //balance
  33.                     areBalanced = true;
  34.                 }
  35.                 //отворена { и затворена }
  36.                 else if (lastOpenBracket == '{' && currentBracket == '}') {
  37.                     //balance
  38.                     areBalanced = true;
  39.                 }
  40.                 //отворена [ и затворена ]
  41.                 else if (lastOpenBracket == '[' && currentBracket == ']') {
  42.                     //balance
  43.                     areBalanced = true;
  44.                 } else {
  45.                     //no balance
  46.                     areBalanced = false;
  47.                     break;
  48.                 }
  49.             }
  50.         }
  51.  
  52.         //проверка дали имаме баланс при всички скоби
  53.         if (areBalanced) {
  54.             System.out.println("YES");
  55.         } else {
  56.             System.out.println("NO");
  57.         }
  58.     }
  59. }
RAW Paste Data