Filip_Markoski

First Midterm.7 Letters (Solved)

Oct 30th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.11 KB | None | 0 0
  1. import java.io.IOException;
  2. import java.util.NoSuchElementException;
  3. import java.util.Scanner;
  4.  
  5. interface Stack<E> {
  6.  
  7.     // Elementi na stekot se objekti od proizvolen tip.
  8.  
  9.     // Metodi za pristap:
  10.  
  11.     public boolean isEmpty();
  12.     // Vrakja true ako i samo ako stekot e prazen.
  13.  
  14.     public E peek();
  15.     // Go vrakja elementot na vrvot od stekot.
  16.  
  17.     // Metodi za transformacija:
  18.  
  19.     public void clear();
  20.     // Go prazni stekot.
  21.  
  22.     public void push(E x);
  23.     // Go dodava x na vrvot na stekot.
  24.  
  25.     public E pop();
  26.     // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  27. }
  28.  
  29. class ArrayStack<E> implements Stack<E> {
  30.     private E[] elems;
  31.     private int depth;
  32.  
  33.     @SuppressWarnings("unchecked")
  34.     public ArrayStack(int maxDepth) {
  35.         // Konstrukcija na nov, prazen stek.
  36.         elems = (E[]) new Object[maxDepth];
  37.         depth = 0;
  38.     }
  39.  
  40.  
  41.     public boolean isEmpty() {
  42.         // Vrakja true ako i samo ako stekot e prazen.
  43.         return (depth == 0);
  44.     }
  45.  
  46.  
  47.     public E peek() {
  48.         // Go vrakja elementot na vrvot od stekot.
  49.         if (depth == 0)
  50.             throw new NoSuchElementException();
  51.         return elems[depth - 1];
  52.     }
  53.  
  54.  
  55.     public void clear() {
  56.         // Go prazni stekot.
  57.         for (int i = 0; i < depth; i++) elems[i] = null;
  58.         depth = 0;
  59.     }
  60.  
  61.  
  62.     public int length() {
  63.         return depth;
  64.     }
  65.  
  66.     public void push(E x) {
  67.         // Go dodava x na vrvot na stekot.
  68.         elems[depth++] = x;
  69.     }
  70.  
  71.  
  72.     public E pop() {
  73.         // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  74.         if (depth == 0)
  75.             throw new NoSuchElementException();
  76.         E topmost = elems[--depth];
  77.         elems[depth] = null;
  78.         return topmost;
  79.     }
  80. }
  81.  
  82. public class StackBukvi {
  83.     static int proveri_t_posle_s(char symbols[]) {
  84.         ArrayStack<Character> stack = new ArrayStack<>(symbols.length);
  85.         for (int i = 0; i < symbols.length; i++) {
  86.             if (symbols[i] == 'S' || symbols[i] == 'T') {
  87.                 stack.push(symbols[i]);
  88.             }
  89.         }
  90.  
  91.         int letterS = 0;
  92.         int letterT = 0;
  93.         while (!(stack.isEmpty())) {
  94.             Character current = stack.pop();
  95.             if (current.equals('T')) {
  96.                 letterT++;
  97.             } else {
  98.                 /* Just looking for when it fails */
  99.                 if (letterS == 0 && letterT == 0) {
  100.                     return 0;
  101.                 } else if (letterS == 0) {
  102.                     letterS = letterT;
  103.                 }
  104.                 /* Occurrences of S and T do not match */
  105.                 else if (letterS != letterT) {
  106.                     return 0;
  107.                 }
  108.                 letterT = 0;
  109.             }
  110.         }
  111.         /* Didn't fail so it must be good */
  112.         return 1;
  113.     }
  114.  
  115.     public static void main(String[] args) throws IOException {
  116.  
  117.         Scanner f = new Scanner(System.in);
  118.         String st = f.next();
  119.         char niza[] = st.toCharArray();
  120.  
  121.         int rez = proveri_t_posle_s(niza);
  122.         System.out.println(rez);
  123.     }
  124.  
  125.  
  126. }
Add Comment
Please, Sign In to add comment