Advertisement
HeatPulse

Lab4-2 Modificiran XML kod

Nov 12th, 2019
329
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 KB | None | 0 0
  1. Модифициран XML код Problem 2 (0 / 1)
  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. Име на класата (Java): CheckXML
  23.  
  24.  
  25. import java.io.BufferedReader;
  26. import java.io.InputStreamReader;
  27. import java.util.NoSuchElementException;
  28. import java.util.Stack;
  29.  
  30. public class CheckXML {
  31.  
  32. public static void main(String[] args) throws Exception{
  33.  
  34. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  35. String s = br.readLine();
  36. int n = Integer.parseInt(s);
  37. String [] redovi = new String[n];
  38.  
  39. for(int i=0;i<n;i++)
  40. redovi[i] = br.readLine();
  41.  
  42. int valid;
  43.  
  44. if (isValid(redovi))
  45. System.out.println(1);
  46. else
  47. System.out.println(0);
  48. br.close();
  49. }
  50.  
  51. private static boolean isValid(String [] rows) {
  52.  
  53. Stack<String> valid = new Stack<>();
  54.  
  55. for (String row : rows) {
  56.  
  57. if (row.charAt(0) == '[' && row.charAt(row.length()-1) == ']') {
  58.  
  59. if (row.charAt(1) != '/')
  60. valid.push(row);
  61.  
  62. else {
  63. if (valid.pop().substring(1).compareTo(row.substring(2)) != 0)
  64. return false;
  65. }
  66.  
  67.  
  68. }
  69.  
  70. }
  71.  
  72. if (valid.isEmpty())
  73. return true;
  74. else
  75. return false;
  76.  
  77. }
  78. }
  79.  
  80. Sample input
  81. 20
  82. [Korisnik]
  83. [Ime]
  84. Jana
  85. [/Ime]
  86. [Prezime]
  87. [Korisnik]
  88. [Ime]
  89. Ivan
  90. [/Ime]
  91. [Prezime]
  92. [/Prezime]
  93. [MBR]
  94. 2807986455092
  95. [/MBR]
  96. [/Korisnik]
  97. [/Prezime]
  98. [MBR]
  99. 2908986455091
  100. [/MBR]
  101. [/Korisnik]
  102. Sample output
  103. 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement