Advertisement
Stamenco

АПС - Модифициран XML код

Nov 16th, 2020
803
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.03 KB | None | 0 0
  1. /* Модифициран XML код
  2.  
  3. Даден е некој модифициран XML код. Модифицираниот XML код ги користи симболите '[' и ']', за отварање и затворање на таг, соодветно, наместо стандардните '
  4.  
  5. ' и '>'. Треба да се провери дали сите тагови во кодот се правилно вгнездени (дали кодот е валиден) т.е. дали секој отворен таг има соодветен затворен таг со истото име на соодветното место во кодот. За поедноставување, дадено е дека секој отворен таг мора да има свој затворен таг и дека таговите немаат атрибути.
  6.  
  7. На влез е даден бројот на редови во кодот и самиот XML со секој таг во посебен ред, а на излез треба да се испечати 1 или 0 за валиден или невалиден код, соодветно.
  8.  
  9. Објаснување: Во модифицираниот XML код секој отворен таг е во облик [imeNaTag], а соодветниот затворен таг е во облик [/imeNaTag].
  10.  
  11. Пример за правилно вгнездени тагови во XML e:
  12. [tag1]
  13. [tag2]
  14. Podatok
  15. [/tag2]
  16. [/tag1]
  17. Пример за неправилно вгнездени тагови во XML e:
  18. [tag1]
  19. [tag2]
  20. Podatok
  21. [/tag1]
  22. [/tag2]
  23. Име на класата (Java): CheckXML */
  24.  
  25. ----------------------------------------------------------------------------------------------------------------------------
  26.  
  27. import java.io.BufferedReader;
  28. import java.io.InputStreamReader;
  29. import java.util.Stack;
  30.  
  31. public class CheckXML {
  32.  
  33.     public static void main(String[] args) throws Exception {
  34.  
  35.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  36.         String s = br.readLine();
  37.         int n = Integer.parseInt(s);
  38.         String[] redovi = new String[n];
  39.  
  40.         for (int i = 0; i < n; i++)
  41.             redovi[i] = br.readLine();
  42.  
  43.         int valid = xlmEquality(redovi);
  44.  
  45.         System.out.println(valid);
  46.  
  47.         br.close();
  48.     }
  49.  
  50.     private static int xlmEquality(String[] items) {
  51.         Stack<String> stack = new Stack<>();
  52.  
  53.         for (String item : items) {
  54.             if (item.charAt(0) == '['&&item.charAt(item.length() - 1) == ']') {
  55.                 if (item.charAt(1) == '/') {
  56.                     StringBuilder sb = new StringBuilder(stack.peek());
  57.                     sb.insert(1, '/');
  58.                     if (sb.toString().equals(item))
  59.                         stack.pop();
  60.                     else
  61.                         return 0;
  62.  
  63.                 } else
  64.                     stack.push(item);
  65.             }
  66.         }
  67.         if (stack.isEmpty())
  68.             return 1;
  69.         return 0;
  70.     }
  71. }
  72.  
  73.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement