Advertisement
Kame3

Модифициран XML код 4.2

Nov 11th, 2020 (edited)
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.02 KB | None | 0 0
  1. Даден е некој модифициран XML код. Модифицираниот XML код ги користи симболите '[' и ']', за отварање и затворање на таг, соодветно, наместо стандардните '
  2.  
  3. ' и '>'. Треба да се провери дали сите тагови во кодот се правилно вгнездени (дали кодот е валиден) т.е. дали секој отворен таг има соодветен затворен таг со истото име на соодветното место во кодот. За поедноставување, дадено е дека секој отворен таг мора да има свој затворен таг и дека таговите немаат атрибути.
  4.  
  5. На влез е даден бројот на редови во кодот и самиот XML со секој таг во посебен ред, а на излез треба да се испечати 1 или 0 за валиден или невалиден код, соодветно.
  6.  
  7. Објаснување: Во модифицираниот XML код секој отворен таг е во облик [imeNaTag], а соодветниот затворен таг е во облик [/imeNaTag].
  8.  
  9. Пример за правилно вгнездени тагови во XML e:
  10. [tag1]
  11. [tag2]
  12. Podatok
  13. [/tag2]
  14. [/tag1]
  15.  
  16. Пример за неправилно вгнездени тагови во XML e:
  17.  
  18. [tag1]
  19. [tag2]
  20. Podatok
  21. [/tag1]
  22. [/tag2]
  23.  
  24. Име на класата (Java): CheckXML
  25.  
  26.  
  27.  
  28. import java.io.BufferedReader;
  29. import java.io.InputStreamReader;
  30. import java.util.NoSuchElementException;
  31. import java.util.Stack;
  32.  
  33. public class CheckXML {
  34.    
  35.     public static void main(String[] args) throws Exception{
  36.          
  37.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
  38.         String s = br.readLine();
  39.         int n = Integer.parseInt(s);
  40.         String [] redovi = new String[n];
  41.    
  42.         for(int i=0;i<n;i++)
  43.             redovi[i] = br.readLine();
  44.        
  45.         int valid;
  46.        
  47.         if (isValid(redovi))
  48.             System.out.println(1);
  49.         else
  50.             System.out.println(0);
  51.         br.close();
  52.     }
  53.    
  54.     private static boolean isValid(String [] rows) {
  55.        
  56.         Stack<String> valid = new Stack<>();
  57.        
  58.         for (String row : rows) {
  59.            
  60.             if (row.charAt(0) == '[' && row.charAt(row.length()-1) == ']') {
  61.                
  62.                 if (row.charAt(1) != '/')
  63.                     valid.push(row);
  64.                
  65.                 else {
  66.                     if (valid.pop().substring(1).compareTo(row.substring(2)) != 0) // veke ima "/" i proverave dr del od stringut
  67.                         return false;
  68.                 }
  69.                
  70.                
  71.             }
  72.            
  73.         }
  74.        
  75.         if (valid.isEmpty())
  76.             return true;
  77.         else
  78.             return false;
  79.    
  80.     }
  81. }
  82.  
  83.  
  84.  
  85.  
  86. Sample input
  87.  
  88. 20
  89. [Korisnik]
  90. [Ime]
  91. Jana
  92. [/Ime]
  93. [Prezime]
  94. [Korisnik]
  95. [Ime]
  96. Ivan
  97. [/Ime]
  98. [Prezime]
  99. [/Prezime]
  100. [MBR]
  101. 2807986455092
  102. [/MBR]
  103. [/Korisnik]
  104. [/Prezime]
  105. [MBR]
  106. 2908986455091
  107. [/MBR]
  108. [/Korisnik]
  109.  
  110. Sample output
  111.  
  112. 1
  113.  
  114.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement