Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Даден е некој модифициран 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.NoSuchElementException;
- 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;
- if (isValid(redovi))
- System.out.println(1);
- else
- System.out.println(0);
- br.close();
- }
- private static boolean isValid(String [] rows) {
- Stack<String> valid = new Stack<>();
- for (String row : rows) {
- if (row.charAt(0) == '[' && row.charAt(row.length()-1) == ']') {
- if (row.charAt(1) != '/')
- valid.push(row);
- else {
- if (valid.pop().substring(1).compareTo(row.substring(2)) != 0) // veke ima "/" i proverave dr del od stringut
- return false;
- }
- }
- }
- if (valid.isEmpty())
- return true;
- else
- return false;
- }
- }
- Sample input
- 20
- [Korisnik]
- [Ime]
- Jana
- [/Ime]
- [Prezime]
- [Korisnik]
- [Ime]
- Ivan
- [/Ime]
- [Prezime]
- [/Prezime]
- [MBR]
- 2807986455092
- [/MBR]
- [/Korisnik]
- [/Prezime]
- [MBR]
- 2908986455091
- [/MBR]
- [/Korisnik]
- Sample output
- 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement