Filip_Markoski

[NP] Супер-стринг

Nov 24th, 2017
680
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.19 KB | None | 0 0
  1. import java.util.*;
  2. /*
  3. Треба да се напише класа SuperString.
  4. Класата во позадина претставува листа на стрингови LinkedList<String> и ги нуди следните методи:
  5.  
  6. SuperString() - креира празен стринг
  7. append(String s) - го додава стрингот на крајот во листата
  8. insert(String s) - го додава стрингот на почеток на листата
  9. contains(String s):boolean -
  10. враќа true доколку стрингот s се наоѓа во супер-стрингот.
  11. Стрингот s може да е разделен во повеќе подстрингови во листата.
  12. Пр: list = [ "st" , "arz" , "andrej" ] , contains("tarzan") –> true
  13. reverse() - го превртува стрингот на следниов начин.
  14. Ги превртува сите елементи во листата, а потоа и секој подстринг како елемент посебно го превртува.
  15. list = [ "st" , "arz" , "andrej: ]; reverse(); list = [ "jerdna", "zra", "ts"]
  16. toString():String - ги враќа конкатенирани сите елементи во листата list = [ "st" , "arz" , "andrej"]; toString() -> "starzandrej"
  17. removeLast(int k) – ги отстранува последнo додадените k подстрингови
  18.  */
  19.  
  20. class SuperString {
  21.  
  22.     LinkedList<String> strings;
  23.     Stack<String> orderedStrings;
  24.  
  25.     public SuperString() {
  26.         this.strings = new LinkedList<>();
  27.         orderedStrings = new Stack<>();
  28.     }
  29.  
  30.     public void append(String string) {
  31.         strings.add(string);
  32.         orderedStrings.push(string);
  33.     }
  34.  
  35.     public void insert(String string) {
  36.         strings.add(0, string);
  37.         orderedStrings.push(string);
  38.     }
  39.  
  40.     public boolean contains(String string) {
  41.         return this.toString().contains(string);
  42.     }
  43.  
  44.     public String reverseString(String string){
  45.         StringBuffer sb = new StringBuffer(string);
  46.         return sb.reverse().toString();
  47.     }
  48.  
  49.     public void reverse(){
  50.         Iterator<String> iterator = strings.descendingIterator();
  51.         LinkedList<String> newStrings = new LinkedList<>();
  52.         while (iterator.hasNext()){
  53.             String toReverse = iterator.next();
  54.             toReverse = reverseString(toReverse);
  55.             newStrings.add(toReverse);
  56.         }
  57.         this.strings = newStrings;
  58.     }
  59.  
  60.     @Override
  61.     public String toString() {
  62.         StringBuffer sb = new StringBuffer();
  63.         Iterator iterator = strings.iterator();
  64.         while (iterator.hasNext()){
  65.             sb.append(iterator.next());
  66.         }
  67.         return sb.toString();
  68.     }
  69.  
  70.     public void removeLast(int countRemove){
  71.         for (int i = 0; i < countRemove; i++) {
  72.             String current = orderedStrings.pop();
  73.             String currentReversed = reverseString(current);
  74.             strings.remove(currentReversed);
  75.             strings.remove(current);
  76.         }
  77.     }
  78. }
  79.  
  80. public class SuperStringTest {
  81.  
  82.     public static void main(String[] args) {
  83.         Scanner jin = new Scanner(System.in);
  84.         int k = jin.nextInt();
  85.         if (k == 0) {
  86.             SuperString s = new SuperString();
  87.             while (true) {
  88.                 int command = jin.nextInt();
  89.                 if (command == 0) {//append(String s)
  90.                     s.append(jin.next());
  91.                 }
  92.                 if (command == 1) {//insert(String s)
  93.                     s.insert(jin.next());
  94.                 }
  95.                 if (command == 2) {//contains(String s)
  96.                     System.out.println(s.contains(jin.next()));
  97.                 }
  98.                 if (command == 3) {//reverse()
  99.                     s.reverse();
  100.                 }
  101.                 if (command == 4) {//toString()
  102.                     System.out.println(s);
  103.                 }
  104.                 if (command == 5) {//removeLast(int k)
  105.                     s.removeLast(jin.nextInt());
  106.                 }
  107.                 if (command == 6) {//end
  108.                     break;
  109.                 }
  110.             }
  111.         }
  112.     }
  113.  
  114. }
Advertisement
Add Comment
Please, Sign In to add comment