Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.IOException;
- import java.util.Scanner;
- import java.util.NoSuchElementException;
- interface Stack<E> {
- // Elementi na stekot se objekti od proizvolen tip.
- // Metodi za pristap:
- public boolean isEmpty ();
- // Vrakja true ako i samo ako stekot e prazen.
- public E peek ();
- // Go vrakja elementot na vrvot od stekot.
- // Metodi za transformacija:
- public void clear ();
- // Go prazni stekot.
- public void push (E x);
- // Go dodava x na vrvot na stekot.
- public E pop ();
- // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
- }
- class ArrayStack<E> implements Stack<E> {
- private E[] elems;
- private int depth;
- @SuppressWarnings("unchecked")
- public ArrayStack (int maxDepth) {
- // Konstrukcija na nov, prazen stek.
- elems = (E[]) new Object[maxDepth];
- depth = 0;
- }
- public boolean isEmpty () {
- // Vrakja true ako i samo ako stekot e prazen.
- return (depth == 0);
- }
- public E peek () {
- // Go vrakja elementot na vrvot od stekot.
- if (depth == 0)
- throw new NoSuchElementException();
- return elems[depth-1];
- }
- public void clear () {
- // Go prazni stekot.
- for (int i = 0; i < depth; i++) elems[i] = null;
- depth = 0;
- }
- public void push (E x) {
- // Go dodava x na vrvot na stekot.
- elems[depth++] = x;
- }
- public E pop () {
- // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
- if (depth == 0)
- throw new NoSuchElementException();
- E topmost = elems[--depth];
- elems[depth] = null;
- return topmost;
- }
- }
- public class StackBukvi {
- /////////////////////
- static int proveri_t_posle_s(char [] St)
- {
- ArrayStack bukvi = new<Character> ArrayStack( 100 );
- // stackot se polni
- for( int i=0; i<St.length; i++ ){
- bukvi.push( St[i] );
- }
- int Tinitial = -1000;
- int Tmomental = 0;
- char ch;
- while( !bukvi.isEmpty() ){
- // sekoja iteracija zima naredna bukva od stackot
- ch = (char)bukvi.pop(); //? castov
- // se brojat T
- if( ch == 'T' )
- Tmomental++;
- // koga ke dojde na S proveri go br na prethodno izbrojani T
- if( ch == 'S' ){
- // ako Tinitial e 0, t.e ova e prvo S, dodeli go Tmomental na Tinitial
- if(Tinitial == -1000){
- Tinitial = Tmomental;
- }
- // ako megju dve S imalo razlicen br na T so Tinitial
- if( Tmomental != Tinitial )
- return 0;
- // od novo ke se broi, Tmomental vrati go na 0;
- Tmomental = 0;
- }
- }
- return 1;
- }
- ////////////////////
- public static void main(String[] args) throws IOException {
- char [] niza=new char[100];
- Scanner f=new Scanner(System.in);
- String st=f.next();
- niza=st.toCharArray();
- int rez= proveri_t_posle_s(niza);
- System.out.println(rez);
- }
- }
Add Comment
Please, Sign In to add comment