Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Букви Problem 7 (3 / 6)
- Дадена е низа од големи букви, во која буквата S се појавува парен број пати. После секоја буква S буквата Т се појавува еднаш или повеќе пати.Користејќи стек да се одреди дали после секоја буква S (до следната буква S), буквата Т се појавува ист број на пати. На првиот ред од влезот се чита низа од карактери (стринг), на излез се печати 1 доколку буквата Т се појавува ист број на пати после секоја S, и нула доколку овој услов не е исполнет.
- Име на класата: StackBukvi
- ==========================================================================================================================================
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.NoSuchElementException;
- public class StackBukvi {
- static class SLLNode<E> {
- protected E element;
- protected SLLNode<E> succ;
- public SLLNode(E elem, SLLNode<E> succ) {
- this.element = elem;
- this.succ = succ;
- }
- @Override
- public String toString() {
- return element.toString();
- }
- }
- static 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.
- }
- static class LinkedStack<E> implements Stack<E> {
- //Stekot e pretstaven na sledniot nacin: top e link do prviot jazol
- // na ednostrano-povrzanata lista koja sodrzi gi elementite na stekot .
- private SLLNode<E> top;
- public LinkedStack () {
- // Konstrukcija na nov, prazen stek.
- top = null;
- }
- public boolean isEmpty () {
- // Vrakja true ako i samo ako stekot e prazen.
- return (top == null);
- }
- public E peek () {
- // Go vrakja elementot na vrvot od stekot.
- if (top == null)
- throw new NoSuchElementException();
- return top.element;
- }
- public void clear () {
- // Go prazni stekot.
- top = null;
- }
- public void push (E x) {
- // Go dodava x na vrvot na stekot.
- top = new SLLNode<E>(x, top);
- }
- public E pop () {
- // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
- if (top == null)
- throw new NoSuchElementException();
- E topElem = top.element;
- top = top.succ;
- return topElem;
- }
- }
- public static void main(String[] args) throws IOException {
- BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
- String line = in.readLine();
- LinkedStack<Character> s = new LinkedStack<>();
- boolean firstOccured = false;
- for(int i = 0; i < line.length();i++){
- if(line.charAt(i) == 'S' && firstOccured == false){
- firstOccured = true;
- s.push('S');
- }else if(firstOccured && line.charAt(i) == 'T' || line.charAt(i) == 'S' ){
- s.push(line.charAt(i));
- }
- }
- int counterFirst = 0;
- int counter = 0;
- boolean firstIterationPassed = false;
- boolean itBreaked = false;
- while(!s.isEmpty()){
- char c = s.pop();
- if(c == 'T'){
- counter++;
- }
- else if(c == 'S' && firstIterationPassed == false){
- firstIterationPassed = true;
- counterFirst = counter;
- counter = 0;
- }
- else if(c == 'S' && firstIterationPassed == true){
- if(counter != counterFirst){
- System.out.println(0);
- itBreaked = true;
- break;
- }
- counter = 0;
- }
- }
- if(!itBreaked)
- System.out.println("1");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement