Advertisement
196040

APS zadaci za vezbanje 1 kol Bukvi

Nov 24th, 2020
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.41 KB | None | 0 0
  1. import java.io.IOException;
  2. import java.util.Scanner;
  3. import java.util.NoSuchElementException;
  4. interface Stack<E> {
  5.     // Elementi na stekot se objekti od proizvolen tip. Metodi za pristap:
  6.     public boolean isEmpty ();// Vrakja true ako i samo ako stekot e prazen.
  7.     public E peek ();// Go vrakja elementot na vrvot od stekot.
  8.     // Metodi za transformacija:
  9.     public void clear ();// Go prazni stekot.
  10.     public void push (E x);// Go dodava x na vrvot na stekot.
  11.     public E pop ();// Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  12. }
  13. class ArrayStack<E> implements Stack<E> {
  14.     private E[] elems;
  15.     private int depth;
  16.     @SuppressWarnings("unchecked")
  17.     public ArrayStack (int maxDepth) {
  18.         // Konstrukcija na nov, prazen stek.
  19.         elems = (E[]) new Object[maxDepth];
  20.         depth = 0;
  21.     }
  22.     public boolean isEmpty () {
  23.         // Vrakja true ako i samo ako stekot e prazen.
  24.         return (depth == 0);
  25.     }
  26.     public E peek () {
  27.         // Go vrakja elementot na vrvot od stekot.
  28.         if (depth == 0)
  29.             throw new NoSuchElementException();
  30.         return elems[depth-1];
  31.     }
  32.     public void clear () {
  33.         // Go prazni stekot.
  34.         for (int i = 0; i < depth; i++)  elems[i] = null;
  35.         depth = 0;
  36.     }
  37.     public void push (E x) {
  38.         // Go dodava x na vrvot na stekot.
  39.         elems[depth++] = x;
  40.     }
  41.     public E pop () {
  42.         // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  43.         if (depth == 0)
  44.             throw new NoSuchElementException();
  45.         E topmost = elems[--depth];
  46.         elems[depth] = null;
  47.         return topmost;
  48.     }
  49. }
  50. public class StackBukvi {
  51.     static int proveri_t_posle_s(char[] St) {
  52.         ArrayStack<Character> bozegospodi = new ArrayStack<>(St.length);
  53.               int counter = 1;
  54.         for (int i = 0; i < St.length; i++) {
  55.             if (St[i] == 'S') {
  56.                 counter++;
  57.             }
  58.             if (counter % 2 == 0 && St[i] == 'T') {
  59.                 bozegospodi.push(St[i]);
  60.             } else if (counter % 2 == 1 && counter!=1 && St[i] == 'T') {
  61.                 if(bozegospodi.peek()!=null)
  62.                     bozegospodi.pop();
  63.                 else return 0;
  64.             }
  65.         }
  66.         if(!bozegospodi.isEmpty())
  67.             return 0;
  68.         else return 1;
  69.     }
  70.     public static void main(String[] args) throws IOException {
  71.         char [] niza=new char[100];
  72.         Scanner f=new Scanner(System.in);
  73.         String st=f.next();
  74.         niza=st.toCharArray();
  75.         int rez= proveri_t_posle_s(niza);
  76.         System.out.println(rez);
  77.     }
  78. }
  79. /*
  80. Дадена е низа од големи букви, во која буквата S се појавува парен број пати.
  81. После секоја буква S буквата Т се појавува еднаш или повеќе пати.
  82. Користејќи стек да се одреди дали после секоја буква S (до следната буква S),
  83. буквата Т се појавува ист број на пати. На првиот ред од влезот се чита низа од карактери (стринг),
  84. на иzлез се печати 1 доколку буквата Т се појавува ист број на пати после секоја S, и нула доколку овој услов не е исполнет.
  85. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement