Advertisement
fensa08

[APS] Bukvi

Sep 18th, 2019
621
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.74 KB | None | 0 0
  1. Букви Problem 7 (3 / 6)
  2.  
  3. Дадена е низа од големи букви, во која буквата S се појавува парен број пати. После секоја буква S буквата Т се појавува еднаш или повеќе пати.Користејќи стек да се одреди дали после секоја буква S (до следната буква S), буквата Т се појавува ист број на пати. На првиот ред од влезот се чита низа од карактери (стринг), на излез се печати 1 доколку буквата Т се појавува ист број на пати после секоја S, и нула доколку овој услов не е исполнет.
  4.  
  5. Име на класата: StackBukvi
  6.  
  7.  
  8. ==========================================================================================================================================
  9.  
  10. import java.io.BufferedReader;
  11. import java.io.IOException;
  12. import java.io.InputStreamReader;
  13. import java.util.NoSuchElementException;
  14.  
  15. public class StackBukvi {
  16.  
  17.     static class SLLNode<E> {
  18.         protected E element;
  19.         protected SLLNode<E> succ;
  20.  
  21.         public SLLNode(E elem, SLLNode<E> succ) {
  22.             this.element = elem;
  23.             this.succ = succ;
  24.         }
  25.  
  26.         @Override
  27.         public String toString() {
  28.             return element.toString();
  29.         }
  30.     }
  31.  
  32.     static interface Stack<E> {
  33.  
  34.         // Elementi na stekot se objekti od proizvolen tip.
  35.  
  36.         // Metodi za pristap:
  37.  
  38.         public boolean isEmpty ();
  39.         // Vrakja true ako i samo ako stekot e prazen.
  40.  
  41.         public E peek ();
  42.         // Go vrakja elementot na vrvot od stekot.
  43.  
  44.         // Metodi za transformacija:
  45.  
  46.         public void clear ();
  47.         // Go prazni stekot.
  48.  
  49.         public void push (E x);
  50.         // Go dodava x na vrvot na stekot.
  51.  
  52.         public E pop ();
  53.         // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  54.     }
  55.  
  56.     static class LinkedStack<E> implements Stack<E> {
  57.  
  58.         //Stekot e pretstaven na sledniot nacin: top e link do prviot jazol
  59.         // na ednostrano-povrzanata lista koja sodrzi gi elementite na stekot .
  60.         private SLLNode<E> top;
  61.  
  62.         public LinkedStack () {
  63.             // Konstrukcija na nov, prazen stek.
  64.             top = null;
  65.         }
  66.  
  67.         public boolean isEmpty () {
  68.             // Vrakja true ako i samo ako stekot e prazen.
  69.             return (top == null);
  70.         }
  71.  
  72.         public E peek () {
  73.             // Go vrakja elementot na vrvot od stekot.
  74.             if (top == null)
  75.                 throw new NoSuchElementException();
  76.             return top.element;
  77.         }
  78.  
  79.         public void clear () {
  80.             // Go prazni stekot.
  81.             top = null;
  82.         }
  83.  
  84.         public void push (E x) {
  85.             // Go dodava x na vrvot na stekot.
  86.             top = new SLLNode<E>(x, top);
  87.         }
  88.  
  89.         public E pop () {
  90.             // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  91.             if (top == null)
  92.                 throw new NoSuchElementException();
  93.             E topElem = top.element;
  94.             top = top.succ;
  95.             return topElem;
  96.         }
  97.  
  98.     }
  99.  
  100.  
  101.     public static void main(String[] args) throws IOException {
  102.         BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  103.         String line = in.readLine();
  104.  
  105.         LinkedStack<Character> s = new LinkedStack<>();
  106.         boolean firstOccured = false;
  107.         for(int i = 0; i < line.length();i++){
  108.             if(line.charAt(i) == 'S' && firstOccured == false){
  109.                 firstOccured = true;
  110.                 s.push('S');
  111.             }else if(firstOccured && line.charAt(i) == 'T' || line.charAt(i) == 'S' ){
  112.                 s.push(line.charAt(i));
  113.             }
  114.         }
  115.  
  116.         int counterFirst = 0;
  117.         int counter = 0;
  118.         boolean firstIterationPassed = false;
  119.         boolean itBreaked = false;
  120.         while(!s.isEmpty()){
  121.             char c = s.pop();
  122.             if(c == 'T'){
  123.                 counter++;
  124.             }
  125.             else if(c == 'S' && firstIterationPassed == false){
  126.                 firstIterationPassed = true;
  127.                 counterFirst = counter;
  128.                 counter = 0;
  129.             }
  130.             else if(c == 'S' && firstIterationPassed == true){
  131.                 if(counter != counterFirst){
  132.                     System.out.println(0);
  133.                     itBreaked = true;
  134.                     break;
  135.                 }
  136.                 counter = 0;
  137.  
  138.             }
  139.         }
  140.         if(!itBreaked)
  141.             System.out.println("1");
  142.     }
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement