Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Модифициран XML код
- Даден е некој модифициран XML код. Модифицираниот XML код ги користи симболите '[' и ']', за отварање и затворање на таг, соодветно, наместо стандардните '
- ' и '>'. Треба да се провери дали сите тагови во кодот се правилно вгнездени (дали кодот е валиден) т.е. дали секој отворен таг има соодветен затворен таг со истото име на соодветното место во кодот. За поедноставување, дадено е дека секој отворен таг мора да има свој затворен таг и дека таговите немаат атрибути.
- На влез е даден бројот на редови во кодот и самиот XML со секој таг во посебен ред, а на излез треба да се испечати 1 или 0 за валиден или невалиден код, соодветно.
- Објаснување: Во модифицираниот XML код секој отворен таг е во облик [imeNaTag], а соодветниот затворен таг е во облик [/imeNaTag].
- Пример за правилно вгнездени тагови во XML e:
- [tag1]
- [tag2]
- Podatok
- [/tag2]
- [/tag1]
- Пример за неправилно вгнездени тагови во XML e:
- [tag1]
- [tag2]
- Podatok
- [/tag1]
- [/tag2]
- Име на класата (Java): CheckXML */
- ----------------------------------------------------------------------------------------------------------------------------
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.util.Stack;
- public class CheckXML {
- public static void main(String[] args) throws Exception {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- String s = br.readLine();
- int n = Integer.parseInt(s);
- String[] redovi = new String[n];
- for (int i = 0; i < n; i++)
- redovi[i] = br.readLine();
- int valid = xlmEquality(redovi);
- System.out.println(valid);
- br.close();
- }
- private static int xlmEquality(String[] items) {
- Stack<String> stack = new Stack<>();
- for (String item : items) {
- if (item.charAt(0) == '['&&item.charAt(item.length() - 1) == ']') {
- if (item.charAt(1) == '/') {
- StringBuilder sb = new StringBuilder(stack.peek());
- sb.insert(1, '/');
- if (sb.toString().equals(item))
- stack.pop();
- else
- return 0;
- } else
- stack.push(item);
- }
- }
- if (stack.isEmpty())
- return 1;
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement