Advertisement
Guest User

Brackets

a guest
May 20th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.38 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.util.ArrayDeque;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6.  
  7. public class Main {
  8.  
  9.     public static void main(String[] args) {
  10.         String textTrue = "This is {some (text), nq[ma ](kakvo na 890 ti ,l;';') [da ;l'l'] za vas}";
  11.         String textFalse = "Tdfhhis is {some (texghft),123 nqma ([kakvo]gh na asdsad ti dasd) r6r kaja ( za bvcws) }";
  12.         String textFalse2 = "This asdgfis {some (texfght), nfgnqma ([kkakvo] na asd678sadsdf ti erfgdfgdfgd df) da fgh ( za [] vas) }";
  13.         String textFalse3 = "This isds {some (text), .,/789 ([kakvo]mbv na asdasd ti asdasd) da asdasd ( za {} asdasd) }";
  14.         String textFalse4 = "This is {some (textsas), nqma ([ka{}kvo] nvbnvba dfvdfg ti dfgdfg) da kaja ( za vas) }";
  15.         String noBrackets = "this is some jklkjljklj jkljkljkl jkl43234assd";
  16.  
  17.         String[] test = new String[]{
  18.                 textTrue, textFalse, textFalse2, textFalse3, textFalse4, noBrackets
  19.         };
  20.  
  21.         for (int i = 0; i < test.length; i++) {
  22.             System.out.println(CheckBrackets(test[i]));
  23.         }
  24.     }
  25.  
  26.     private static boolean CheckBrackets(String textTrue) {
  27.         String bracketsRegex = "(?<openingRound>[\\(])?(?<closingRound>[\\)])?(?<openingSquare>[\\[])?(?<closingSquare>[\\]])?(?<openingCurly>[\\{])?(?<closingCurly>[\\}])?";
  28.  
  29.         Pattern pattern = Pattern.compile(bracketsRegex);
  30.         Matcher matcher = pattern.matcher(textTrue);
  31.  
  32.         StringBuilder sb = new StringBuilder();
  33.  
  34.         while (matcher.find()) {
  35.             if (!(matcher.group("openingRound") == null)) {
  36.                 sb.append(matcher.group("openingRound"));
  37.             } else if (!(matcher.group("closingRound") == null)) {
  38.                 sb.append(matcher.group("closingRound"));
  39.             } else if (!(matcher.group("openingSquare") == null)) {
  40.                 sb.append(matcher.group("openingSquare"));
  41.             } else if (!(matcher.group("closingSquare") == null)) {
  42.                 sb.append(matcher.group("closingSquare"));
  43.             } else if (!(matcher.group("openingCurly") == null)) {
  44.                 sb.append(matcher.group("openingCurly"));
  45.             } else if (!(matcher.group("closingCurly") == null)) {
  46.                 sb.append(matcher.group("closingCurly"));
  47.             }
  48.         }
  49.         boolean isValid = true;
  50.         if (sb.length() % 2 != 0) {
  51.             isValid = false;
  52.         }
  53.         String brackets = sb.toString();
  54.        
  55.         ArrayDeque<Character> stack = new ArrayDeque<>();
  56.  
  57.         for (int i = 0; i < brackets.length(); i++) {
  58.             char current = brackets.charAt(i);
  59.  
  60.             if (current == '[' || current == '{' || current == '(') {
  61.                 stack.push(current);
  62.             } else {
  63.                 if (stack.isEmpty()) {
  64.                     isValid = false;
  65.                     break;
  66.                 }
  67.                 char topChar = stack.pop();
  68.                 if (current == ']' && topChar != '[') {
  69.                     isValid = false;
  70.                     break;
  71.                 } else if (current == '}' && topChar != '{') {
  72.                     isValid = false;
  73.                     break;
  74.                 } else if (current == ')' && topChar != '(') {
  75.                     isValid = false;
  76.                     break;
  77.                 }
  78.             }
  79.         }
  80.         return isValid;
  81.     }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement