Dev-san

Untitled

Oct 30th, 2014
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.39 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.util.NoSuchElementException;
  4. import java.util.Stack;
  5.  
  6.  
  7. class XMLNode
  8. {
  9.     XMLNode(String name)
  10.     {
  11.         children = new XMLNode[20];
  12.         parent = null;
  13.         nChildren = 0;
  14.         this.name = name;
  15.         zatvoren = false;
  16.     }
  17.    
  18.     void addChild(XMLNode node)
  19.     {
  20.         node.parent = this;
  21.         children[nChildren++] = node;
  22.     }
  23.    
  24.     void print()
  25.     {
  26.         System.out.printf("Node: %s, zatvoren: %s\n", name, zatvoren);
  27.         for (int i = 0; i < nChildren; i++)
  28.             children[i].print();
  29.     }
  30.    
  31.     boolean zatvoren;
  32.     int nChildren;
  33.     String name;
  34.     XMLNode parent;
  35.     XMLNode children[];
  36. }
  37.  
  38. public class CheckXML {
  39.    
  40.     static boolean eZatvoracki(String tag)
  41.     {
  42.         return tag.charAt(1) == '/';
  43.     }
  44.    
  45.     static String imeTag(String tag)
  46.     {
  47.         if (!eTag(tag))
  48.             return "";
  49.         return (eZatvoracki(tag) ? tag.substring(2, tag.length()-1) : tag.substring(1, tag.length()-1));
  50.     }
  51.    
  52.     static boolean eTag(String tag)
  53.     {
  54.         return tag.charAt(0) == '[';
  55.     }
  56.    
  57.     public static void main(String[] args) throws Exception{
  58.          
  59.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
  60.         String s = br.readLine();
  61.         int n = Integer.parseInt(s);
  62.         String [] redovi = new String[n];
  63.    
  64.         for(int i=0;i<n;i++)
  65.             redovi[i] = br.readLine();
  66.        
  67.         int valid = 1;
  68.         Stack<String> stack = new Stack<String>();
  69.         XMLNode rootyRoot = new XMLNode("[]");
  70.         XMLNode root = new XMLNode(imeTag(redovi[0]));
  71.         rootyRoot.addChild(root);
  72.         XMLNode aktiven = root;
  73.         for (int i = 1; i < redovi.length; i++)
  74.         {
  75.             String red = redovi[i];
  76.             if (eTag(red))
  77.             {
  78.                 if (!eZatvoracki(red))
  79.                 {
  80.                     XMLNode roditel = aktiven;
  81.                     aktiven = new XMLNode(imeTag(red));
  82.                     if (roditel != null)
  83.                         roditel.addChild(aktiven);
  84.                     else
  85.                     {
  86.                         valid = 0;
  87.                         break;
  88.                     }
  89.                 }
  90.                 else
  91.                 {
  92.                     //=System.out.printf("Aktiven: %s se zatvora so %s\n", aktiven.name, imeTag(red));
  93.                     if (aktiven.name.equals(imeTag(red)))
  94.                         aktiven.zatvoren = true;
  95.                     else
  96.                     {
  97.                         valid = 0;
  98.                         break;
  99.                     }
  100.                     aktiven = aktiven.parent;
  101.                 }
  102.                 //System.out.println(imeTag(redovi[i]));
  103.             }
  104.         }
  105.        
  106.         //root.print();
  107.         System.out.println(valid);
  108.        
  109.         br.close();
  110.     }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment