Advertisement
SlavkovB

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

Sep 15th, 2019
873
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.81 KB | None | 0 0
  1. /**Модифициран XML код
  2. Даден е некој модифициран XML код. Модифицираниот XML код ги користи симболите '[' и ']', за отварање и затворање на таг, соодветно, наместо стандардните '
  3.  
  4. ' и '>'. Треба да се провери дали сите тагови во кодот се правилно вгнездени (дали кодот е валиден) т.е. дали секој отворен таг има соодветен затворен таг со истото име на соодветното место во кодот. За поедноставување, дадено е дека секој отворен таг мора да има свој затворен таг и дека таговите немаат атрибути.
  5.  
  6. На влез е даден бројот на редови во кодот и самиот XML со секој таг во посебен ред, а на излез треба да се испечати 1 или 0 за валиден или невалиден код, соодветно.
  7.  
  8. Објаснување: Во модифицираниот XML код секој отворен таг е во облик [imeNaTag], а соодветниот затворен таг е во облик [/imeNaTag].
  9.  
  10. Пример за правилно вгнездени тагови во XML e:
  11. [tag1]
  12. [tag2]
  13. Podatok
  14. [/tag2]
  15. [/tag1]
  16. Пример за неправилно вгнездени тагови во XML e:
  17. [tag1]
  18. [tag2]
  19. Podatok
  20. [/tag1]
  21. [/tag2]
  22.  
  23.  
  24. Sample input:
  25. 20
  26. [Korisnik]
  27. [Ime]
  28. Jana
  29. [/Ime]
  30. [Prezime]
  31. [Korisnik]
  32. [Ime]
  33. Ivan
  34. [/Ime]
  35. [Prezime]
  36. [/Prezime]
  37. [MBR]
  38. 2807986455092
  39. [/MBR]
  40. [/Korisnik]
  41. [/Prezime]
  42. [MBR]
  43. 2908986455091
  44. [/MBR]
  45. [/Korisnik]
  46. Sample output:
  47. 1
  48.  
  49. Sample input:
  50. 10
  51. [Korisnik]
  52. [Ime]
  53. Jana
  54. [/Ime]
  55. [Prezime]
  56. [/Ime]
  57. [MBR]
  58. 2807986455092
  59. [/MBR]
  60. [/Korisnik]
  61. Sample output:
  62. 0
  63.  
  64. Sample input:
  65. 10
  66. [Korisnik]
  67. [Ime]
  68. Jana
  69. [/Ime]
  70. [Prezime]
  71. [/Prezime]
  72. [MBR]
  73. 2807986455092
  74. [/MBR]
  75. [/Kor]
  76. Sample output:
  77. 0
  78.  
  79. Sample input:
  80. 10
  81. [Korisnik]
  82. [Ime]
  83. Jana
  84. [MBR]
  85. [/Ime]
  86. [MBR]
  87. 2807986455092
  88. [/MBR]
  89. [/MBR]
  90. [/Korisnik]
  91. Sample output:
  92. 0
  93.  
  94. Sample input:
  95. 2
  96. [text]
  97. [/text]
  98. Sample output:
  99. 1
  100.  
  101. Sample input:
  102. 5
  103. [Korisnik]
  104. [/Ime]
  105. Jana
  106. [Ime]
  107. [/Korisnik]
  108. Sample output:
  109. 0
  110.  
  111. Sample input:
  112. 10
  113. [MBR]
  114. [Broj]
  115. 2807986455092
  116. [/Broj]
  117. [Ime]
  118. [Broj]
  119. Jana
  120. [/Ime]
  121. [/Broj]
  122. [/MBR]
  123. Sample output:
  124. 0
  125.  
  126. Sample input:
  127. 9
  128. [Tabela]
  129. [Red]
  130. [Podatok]
  131. [/Podatok]
  132. [Podatok]
  133. Primer
  134. [/Podatok]
  135. [/Red
  136. [/Tabela]
  137. Sample output:
  138. 0
  139.  
  140. Sample input:
  141. 12
  142. [body]
  143. [div]
  144. [a]
  145. [/a]
  146. [/div]
  147. [div]
  148. [a]
  149. [/a]
  150. [/div]
  151. [/body]
  152. [p]
  153. [/p]
  154. Sample output:
  155. 1
  156.  
  157. Sample input:
  158. 11
  159. [html]
  160. [title]
  161. goodbye
  162. [/title]
  163. [body]
  164. h3]
  165. [ul]
  166. [/ul]
  167. [/h3]
  168. [/body]
  169. [/html]
  170. Sample output:
  171. 0
  172. */
  173.  
  174.  
  175. //CODE
  176.  
  177.  
  178.  
  179. import java.util.Scanner;
  180. import java.util.Stack;
  181.  
  182. public class XML {
  183.  
  184.     private static int xlmEquality(String[] items) {
  185.         Stack<String> stack = new Stack<>();
  186.  
  187.         for (int i = 0; i < items.length; i++) {
  188.             if (items[i].charAt(0) == '[' && items[i].charAt(items[i].length() - 1) == ']') {
  189.                 if (items[i].charAt(1) == '/') {
  190.                     StringBuilder sb = new StringBuilder(stack.peek());
  191.                     sb.insert(1, '/');
  192.                     if (sb.toString().equals(items[i]))
  193.                         stack.pop();
  194.                     else
  195.                         return 0;
  196.  
  197.                 } else
  198.                     stack.push(items[i]);
  199.             }
  200.         }
  201.  
  202.         if (stack.isEmpty())
  203.             return 1;
  204.         return 0;
  205.     }
  206.  
  207.     public static void main(String[] args) {
  208.         Scanner input = new Scanner(System.in);
  209.         int rows = Integer.parseInt(input.nextLine());
  210.  
  211.         String[] items = new String[rows];
  212.  
  213.         for (int i = 0; i < rows; i++) {
  214.             items[i] = input.nextLine();
  215.         }
  216.  
  217.         System.out.println(xlmEquality(items));
  218.  
  219.         input.close();
  220.     }
  221.  
  222. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement