daily pastebin goal
36%
SHARE
TWEET

[АПС] Модифициран XML код

johnLi Aug 10th, 2018 (edited) 69 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.util.Scanner;
  2. import java.util.NoSuchElementException;
  3. import java.lang.StringIndexOutOfBoundsException;
  4. import java.io.BufferedReader;
  5. import java.io.InputStreamReader;
  6. import java.io.*;
  7.  
  8. interface Stack<E> {
  9.  
  10.     // Elementi na stekot se objekti od proizvolen tip.
  11.  
  12.     // Metodi za pristap:
  13.  
  14.     public boolean isEmpty ();
  15.         // Vrakja true ako i samo ako stekot e prazen.
  16.  
  17.     public E peek ();
  18.         // Go vrakja elementot na vrvot od stekot.
  19.  
  20.     // Metodi za transformacija:
  21.  
  22.     public void clear ();
  23.         // Go prazni stekot.
  24.  
  25.     public void push (E x);
  26.         // Go dodava x na vrvot na stekot.
  27.  
  28.     public E pop ();
  29.         // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  30. }
  31.  
  32. class ArrayStack<E> implements Stack<E> {
  33.  
  34.     // Stekot e pretstaven na sledniot nacin:
  35.     //depth e dlabochinata na stekot, a
  36.     // elems[0...depth-1] se negovite elementi.
  37.     private E[] elems;
  38.     private int depth;
  39.  
  40.     @SuppressWarnings("unchecked")
  41.     public ArrayStack (int maxDepth) {
  42.         // Konstrukcija na nov, prazen stek.
  43.         elems = (E[]) new Object[maxDepth];
  44.         depth = 0;
  45.     }
  46.  
  47.  
  48.     public boolean isEmpty () {
  49.         // Vrakja true ako i samo ako stekot e prazen.
  50.         return (depth == 0);
  51.     }
  52.  
  53.  
  54.     public E peek () {
  55.         // Go vrakja elementot na vrvot od stekot.
  56.         if (depth == 0)
  57.             throw new NoSuchElementException();
  58.         return elems[depth-1];
  59.     }
  60.  
  61.  
  62.     public void clear () {
  63.         // Go prazni stekot.
  64.         for (int i = 0; i < depth; i++)  elems[i] = null;
  65.         depth = 0;
  66.     }
  67.  
  68.  
  69.     public void push (E x) {
  70.         // Go dodava x na vrvot na stekot.
  71.         elems[depth++] = x;
  72.     }
  73.  
  74.  
  75.     public E pop () {
  76.         // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  77.         if (depth == 0)
  78.             throw new NoSuchElementException();
  79.         E topmost = elems[--depth];
  80.         elems[depth] = null;
  81.         return topmost;
  82.     }
  83.    
  84.     public int getDepth() {
  85.         return depth;
  86.     }
  87. }
  88.  
  89. public class Solution{
  90.     public static boolean evaluate(String[] s) {
  91.         ArrayStack<String> xml = new ArrayStack<>(s.length);
  92.        
  93.         for(int i=0; i<s.length; i++) {
  94.             String izraz = s[i];
  95.             if(izraz.charAt(0)=='[' && izraz.charAt(izraz.length()-1)==']') {
  96.                 if(izraz.charAt(1)=='/') {
  97.                     if(xml.getDepth()==0) {
  98.                         return false;
  99.                     }
  100.                     String proverka = xml.pop();
  101.                     proverka = proverka.substring(1);
  102.                     izraz = izraz.substring(2);
  103.                     if(!proverka.equals(izraz)) {
  104.                         return false;
  105.                     }
  106.                 }else {
  107.                     xml.push(izraz);
  108.                 }
  109.             }
  110.         }
  111.         return xml.isEmpty();
  112.     }
  113.    
  114.     public static void main(String []args) throws IOException {
  115.         BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  116.         int n = Integer.parseInt(in.readLine());
  117.         String []xml = new String[n];
  118.        
  119.         for(int i=0; i<n; i++) {
  120.             String izraz = in.readLine();
  121.             xml[i] = izraz;
  122.         }
  123.        
  124.         if(evaluate(xml)) {
  125.             System.out.println(1);
  126.         }
  127.         else {
  128.             System.out.println(0);
  129.         }
  130.         in.close();
  131.     }
  132. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top