Advertisement
duplicityyy

[АПС] - Букви

Aug 21st, 2020
485
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.51 KB | None | 0 0
  1. Букви Problem 7 (5 / 13)
  2.  
  3. Дадена е низа од големи букви, во која буквата S се појавува парен број пати. После секоја буква S буквата Т се појавува еднаш или повеќе пати.Користејќи стек да се одреди дали после секоја буква S (до следната буква S), буквата Т се појавува ист број на пати. На првиот ред од влезот се чита низа од карактери (стринг), на излез се печати 1 доколку буквата Т се појавува ист број на пати после секоја S, и нула доколку овој услов не е исполнет.
  4.  
  5. Име на класата: StackBukvi
  6.  
  7. Sample input
  8. STUOSTUOSPTPRSPT
  9. Sample output
  10. 1
  11.  
  12. Sample input
  13. STUSTHSTST
  14. Sample output
  15. 1
  16.  
  17. Sample input
  18. ASGTBST
  19. Sample output
  20. 1
  21.  
  22. Sample input
  23. ASGTISTHSFTSUDTSITTTSOT
  24. Sample output
  25. 0
  26.  
  27. Sample input
  28. STUSTSTSG
  29. Sample output
  30. 0
  31. ---------------------------------------------------------------------------------------------------------------------------------------
  32.  
  33. import java.io.IOException;
  34. import java.util.Arrays;
  35. import java.util.NoSuchElementException;
  36. import java.util.Scanner;
  37.  
  38. interface Stack<E> {
  39.  
  40.     // Elementi na stekot se objekti od proizvolen tip.
  41.  
  42.     // Metodi za pristap:
  43.  
  44.     public boolean isEmpty();
  45.     // Vrakja true ako i samo ako stekot e prazen.
  46.  
  47.     public E peek();
  48.     // Go vrakja elementot na vrvot od stekot.
  49.  
  50.     // Metodi za transformacija:
  51.  
  52.     public void clear();
  53.     // Go prazni stekot.
  54.  
  55.     public void push(E x);
  56.     // Go dodava x na vrvot na stekot.
  57.  
  58.     public E pop();
  59.     // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  60. }
  61.  
  62. class ArrayStack<E> implements Stack<E> {
  63.     private E[] elems;
  64.     private int depth;
  65.  
  66.     @SuppressWarnings("unchecked")
  67.     public ArrayStack(int maxDepth) {
  68.         // Konstrukcija na nov, prazen stek.
  69.         elems = (E[]) new Object[maxDepth];
  70.         depth = 0;
  71.     }
  72.  
  73.  
  74.     public boolean isEmpty() {
  75.         // Vrakja true ako i samo ako stekot e prazen.
  76.         return (depth == 0);
  77.     }
  78.  
  79.  
  80.     public E peek() {
  81.         // Go vrakja elementot na vrvot od stekot.
  82.         if (depth == 0)
  83.             throw new NoSuchElementException();
  84.         return elems[depth - 1];
  85.     }
  86.  
  87.  
  88.     public void clear() {
  89.         // Go prazni stekot.
  90.         for (int i = 0; i < depth; i++) elems[i] = null;
  91.         depth = 0;
  92.     }
  93.  
  94.  
  95.     public void push(E x) {
  96.         // Go dodava x na vrvot na stekot.
  97.         elems[depth++] = x;
  98.     }
  99.  
  100.  
  101.     public E pop() {
  102.         // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  103.         if (depth == 0)
  104.             throw new NoSuchElementException();
  105.         E topmost = elems[--depth];
  106.         elems[depth] = null;
  107.         return topmost;
  108.     }
  109. }
  110.  
  111. public class Main {
  112.     static int proveri_t_posle_s(char[] St) {
  113.         ArrayStack<String> stckarr = new ArrayStack<>(St.length);
  114.         for (int i = St.length - 1; i >= 0; i--) {
  115.             stckarr.push(Character.toString(St[i]));
  116.         }
  117.         /*for (int i = 0; i < St.length; i++) {
  118.             System.out.println(i + ": " + stckarr.pop());
  119.         }*/
  120.         int daliS = 0;
  121.         int brojachTvoS = 0;
  122.         int brojachTvonS = 0;
  123.         while (!stckarr.isEmpty()) {
  124.             if (stckarr.peek().equals("S") && daliS == 0) { // pocetok na S
  125.                 daliS++;
  126.                 stckarr.pop();
  127.             } else if (stckarr.peek().equals("T") && daliS != 0) { // T vo S
  128.                 stckarr.pop();
  129.                 brojachTvoS++;
  130.             } else if (stckarr.peek().equals("S") && daliS == 1) { // Kraj na S
  131.                 daliS = 0;
  132.                 stckarr.pop();
  133.             } else if (stckarr.peek().equals("T") && daliS == 0 && brojachTvoS != 0) { // T von S
  134.                 stckarr.pop();
  135.                 brojachTvonS++;
  136.             } else {
  137.                 stckarr.pop();
  138.             }
  139.         }
  140.  
  141.         if (brojachTvoS == brojachTvonS)
  142.             return 1;
  143.         else
  144.             return 0;
  145.  
  146.     }
  147.  
  148.     public static void main(String[] args) throws IOException {
  149.         char[] niza = new char[100];
  150.  
  151.         Scanner f = new Scanner(System.in);
  152.         String st = f.next();
  153.         niza = st.toCharArray();
  154.  
  155.         int rez = proveri_t_posle_s(niza);
  156.         System.out.println(rez);
  157.     }
  158.  
  159.  
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement