Advertisement
Nikolovska

[НП] лаб5.1 Супер-стринг

Jun 5th, 2018
780
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.26 KB | None | 0 0
  1. /*Листи (5)
  2. * Супер-стринг Problem 1 (0 / 0)
  3. *
  4. Треба да се напише класа SuperString. Класата во позадина претставува листа на стрингови LinkedList<String> и ги нуди
  5. следните методи:
  6.  
  7. SuperString() - креира празен стринг
  8.  
  9. append(String s) - го додава стрингот на крајот во листата
  10.  
  11. insert(String s) - го додава стрингот на почеток на листата
  12.  
  13. contains(String s):boolean - враќа true доколку стрингот s се наоѓа во супер-стрингот. Стрингот s може да е разделен во
  14. повеќе подстрингови во листата. Пр: list = [ "st" , "arz" , "andrej" ] , contains("tarzan") –> true
  15.  
  16. reverse() - го превртува стрингот на следниов начин. Ги превртува сите елементи во листата, а потоа и секој подстринг
  17. како елемент посебно го превртува. list = [ "st" , "arz" , "andrej: ]; reverse(); list = [ "jerdna", "zra", "ts"]
  18.  
  19. toString():String - ги враќа конкатенирани сите елементи во листата
  20. list = [ "st" , "arz" , "andrej"]; toString() -> "starzandrej"
  21.  
  22. removeLast(int k) – ги отстранува последнo додадените k подстрингови
  23.  
  24. Sample input
  25. 0
  26. 1 ej`
  27.     0 Gaj
  28.     1 r
  29.     0 du
  30.     1 d
  31.     1 n
  32.     1 A
  33.     0 K
  34.     2 aj
  35.     2 Gaj
  36.     2 Gajd
  37.     2 Gajdu
  38.     2 GajduK
  39.     2 Gajduk
  40.     2 Gajdur
  41.     2 Gajdun
  42.     2 ej`GajrdudnAK
  43.     2 An
  44.     2 Kassandra
  45.     2 dnA
  46.     2 Kand
  47.     2 ejGaj
  48.     2 Andrej`GajduK
  49.     6
  50.  
  51. Sample output
  52.  
  53. true
  54. true
  55. true
  56. true
  57. true
  58. false
  59. false
  60. false
  61. false
  62. true
  63. false
  64. false
  65. false
  66. false
  67. true*/
  68.  
  69. import java.util.Scanner;
  70. import java.util.LinkedList;    
  71. import java.util.Stack;
  72.  
  73. class SuperString {
  74.     private LinkedList<String> strings;
  75.     private Stack<String> history;        
  76.  
  77.     public SuperString() {
  78.         strings = new LinkedList<>();
  79.         history = new Stack<>();
  80.     }
  81.  
  82.     public void append(String s){
  83.         strings.addLast(s);
  84.         history.push(s);
  85.     }
  86.  
  87.     public void insert(String s){
  88.         strings.addFirst(s);
  89.         history.push(s);
  90.     }
  91.  
  92.     public boolean contains(String s){
  93.         return this.toString().contains(s);
  94.     }
  95.  
  96.     @Override
  97.     public String toString() {
  98.         StringBuilder sb = new StringBuilder();
  99.         for (String s : strings) {
  100.             sb.append(s);
  101.         }
  102.         return sb.toString();
  103.     }
  104.  
  105.     public void reverse(){
  106.         LinkedList<String> reversed = new LinkedList<String>();
  107.         String str = null;
  108.         while (!strings.isEmpty()){
  109.             str = strings.getLast();
  110.             str = reverseString(str);
  111.             reversed.addLast(str);
  112.             strings.removeLast();
  113.         }
  114.         for (String s : reversed) {
  115.             strings.addLast(s);
  116.         }
  117.     }
  118.  
  119.     private String reverseString(String s){
  120.         StringBuilder sb = new StringBuilder(s);
  121.         return sb.reverse().toString();
  122.     }
  123.  
  124.     public void removeLast(int k){
  125.         while (k>0){
  126.             String toRemove = history.pop();
  127.             strings.remove(toRemove);
  128.             String toRemoveReversed = reverseString(toRemove);
  129.             strings.remove(toRemoveReversed);
  130.             k--;
  131.         }
  132.     }
  133. }
  134.  
  135.  
  136. public class SuperStringTest {
  137.    
  138.     public static void main(String[] args) {
  139.         Scanner jin = new Scanner(System.in);
  140.         int k = jin.nextInt();
  141.         if (  k == 0 ) {
  142.             SuperString s = new SuperString();
  143.             while ( true ) {
  144.                 int command = jin.nextInt();
  145.                 if ( command == 0 ) {//append(String s)
  146.                     s.append(jin.next());
  147.                 }
  148.                 if ( command == 1 ) {//insert(String s)
  149.                     s.insert(jin.next());
  150.                 }
  151.                 if ( command == 2 ) {//contains(String s)
  152.                     System.out.println(s.contains(jin.next()));
  153.                 }
  154.                 if ( command == 3 ) {//reverse()
  155.                     s.reverse();
  156.                 }
  157.                 if ( command == 4 ) {//toString()
  158.                     System.out.println(s);
  159.                 }
  160.                 if ( command == 5 ) {//removeLast(int k)
  161.                     s.removeLast(jin.nextInt());
  162.                 }
  163.                 if ( command == 6 ) {//end
  164.                     break;
  165.                 }
  166.             }
  167.         }
  168.     }
  169.  
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement