Advertisement
Guest User

superstring

a guest
Nov 14th, 2019
321
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.67 KB | None | 0 0
  1. import java.util.Scanner;
  2. import java.util.Collections;
  3. import java.util.LinkedList;
  4. import java.util.Stack;
  5.  
  6. public class SuperStringTest {
  7.    
  8.     public static void main(String[] args) {
  9.         Scanner jin = new Scanner(System.in);
  10.         int k = jin.nextInt();
  11.         if (  k == 0 ) {
  12.             SuperString s = new SuperString();
  13.             while ( true ) {
  14.                 int command = jin.nextInt();
  15.                 if ( command == 0 ) {//append(String s)
  16.                     s.append(jin.next());
  17.                 }
  18.                 if ( command == 1 ) {//insert(String s)
  19.                     s.insert(jin.next());
  20.                 }
  21.                 if ( command == 2 ) {//contains(String s)
  22.                     System.out.println(s.contains(jin.next()));
  23.                 }
  24.                 if ( command == 3 ) {//reverse()
  25.                     s.reverse();
  26.                 }
  27.                 if ( command == 4 ) {//toString()
  28.                     System.out.println(s);
  29.                 }
  30.                 if ( command == 5 ) {//removeLast(int k)
  31.                     s.removeLast(jin.nextInt());
  32.                 }
  33.                 if ( command == 6 ) {//end
  34.                     break;
  35.                 }
  36.             }
  37.         }
  38.     }
  39.  
  40. }
  41.  
  42. class SuperString {
  43.     private LinkedList<String> lista;
  44.     private Stack<String> last;
  45.     private boolean reversed;
  46.  
  47.     public SuperString(){
  48.         lista = new LinkedList<>();
  49.         last = new Stack<>();
  50.         reversed = false;
  51.     }
  52.  
  53. public void append(String s){
  54.         lista.addLast(s);
  55.         pushStack(s);
  56.     }
  57.  
  58.     public void insert(String s){
  59.         lista.addFirst(s);
  60.         pushStack(s);
  61.     }
  62.  
  63.     private void pushStack(String s){
  64.         if(!reversed)
  65.             last.push(s);
  66.         else{
  67.             StringBuilder sb = new StringBuilder();
  68.             sb.append(s);
  69.             sb.reverse();
  70.             last.push(sb.toString());
  71.         }
  72.     }
  73.  
  74.  
  75.     @Override
  76.     public String toString(){
  77.         StringBuilder sb = new StringBuilder();
  78.         for(String s : lista){
  79.             sb.append(s);
  80.         }
  81.  
  82.         return sb.toString();
  83.     }
  84.  
  85.     public boolean contains(String s){
  86.         String sup = this.toString();
  87.  
  88.         return sup.contains(s);
  89.     }
  90.  
  91.     public void reverse(){
  92.         LinkedList<String> tmp = new LinkedList<>();
  93.         for(String s : lista){
  94.             StringBuilder sb = new StringBuilder();
  95.             sb.append(s);
  96.             s=sb.reverse().toString();
  97.             tmp.addFirst(s);
  98.         }
  99.         lista = tmp;
  100.         reversed = !reversed;
  101.     }
  102.  
  103.     public void removeLast(int k){
  104.  
  105.         for(int i=0;i<k;i++){
  106.             String s = last.pop();
  107.             if(!reversed)
  108.                 lista.remove(s);
  109.             else {
  110.                 StringBuilder sb = new StringBuilder();
  111.                 sb.append(s);
  112.                 sb.reverse();
  113.                 s=sb.toString();
  114.                 lista.remove(s);
  115.             }
  116.         }
  117.  
  118.     }
  119.  
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement