kristina7

НП - Лаб 5-1 Супер-стринг

Jan 3rd, 2019
784
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.90 KB | None | 0 0
  1. /*
  2. Треба да се напише класа SuperString. Класата во позадина претставува листа на стрингови LinkedList<String> и ги нуди следните методи:
  3.  
  4. SuperString() - креира празен стринг
  5. append(String s) - го додава стрингот на крајот во листата
  6. insert(String s) - го додава стрингот на почеток на листата
  7. contains(String s):boolean - враќа true доколку стрингот s се наоѓа во супер-стрингот. Стрингот s може да е разделен во повеќе подстрингови во листата. Пр: list = [ "st" , "arz" , "andrej" ] , contains("tarzan") –> true
  8. reverse() - го превртува стрингот на следниов начин. Ги превртува сите елементи во листата, а потоа и секој подстринг како елемент посебно го превртува. list = [ "st" , "arz" , "andrej: ]; reverse(); list = [ "jerdna", "zra", "ts"]
  9. toString():String - ги враќа конкатенирани сите елементи во листата list = [ "st" , "arz" , "andrej"]; toString() -> "starzandrej"
  10. removeLast(int k) – ги отстранува последнo додадените k подстрингови
  11. */
  12.  
  13. import java.util.ArrayList;
  14. import java.util.Collections;
  15. import java.util.LinkedList;
  16. import java.util.List;
  17. import java.util.Scanner;
  18. import java.util.stream.Collectors;
  19.  
  20. class SuperString {
  21.     LinkedList<String> lista;
  22.     List<String> lastAdded;
  23.  
  24.     public SuperString() {
  25.         lista = new LinkedList<>();
  26.         lastAdded = new ArrayList<>();
  27.     }
  28.     public void append(String s) {
  29.         lista.add(s);
  30.         lastAdded.add(0,s);
  31.     }
  32.     public void insert(String s) {
  33.         lista.add(0, s);
  34.         lastAdded.add(0,s);
  35.     }
  36.     public boolean contains(String s) {
  37.         return this.toString().contains(s);
  38.     }
  39.     public void reverse() {
  40.         Collections.reverse(lista);
  41.         for (int i=0; i<lista.size(); i++) {
  42.             lista.set(i, reverseString(lista.get(i)));
  43.             lastAdded.set(i, reverseString(lastAdded.get(i)));
  44.         }
  45.     }
  46.     public void removeLast(int k) {
  47.         for(String s : lastAdded.subList(0, k))
  48.             lista.remove(s);
  49.         lastAdded = lastAdded.subList(k, lastAdded.size());
  50.     }
  51.     @Override
  52.     public String toString() {
  53.         return lista.stream().collect(Collectors.joining());
  54.     }
  55.     public String reverseString(String s) {
  56.         String reverse="";
  57.         for(int i = s.length()-1; i>=0; i--)
  58.             reverse += s.charAt(i);
  59.         return reverse;
  60.     }
  61. }
  62.  
  63. public class SuperStringTest {
  64.  
  65.     public static void main(String[] args) {
  66.         Scanner jin = new Scanner(System.in);
  67.         int k = jin.nextInt();
  68.         if (  k == 0 ) {
  69.             SuperString s = new SuperString();
  70.             while ( true ) {
  71.                 int command = jin.nextInt();
  72.                 if ( command == 0 ) {//append(String s)
  73.                     s.append(jin.next());
  74.                 }
  75.                 if ( command == 1 ) {//insert(String s)
  76.                     s.insert(jin.next());
  77.                 }
  78.                 if ( command == 2 ) {//contains(String s)
  79.                     System.out.println(s.contains(jin.next()));
  80.                 }
  81.                 if ( command == 3 ) {//reverse()
  82.                     s.reverse();
  83.                 }
  84.                 if ( command == 4 ) {//toString()
  85.                     System.out.println(s);
  86.                 }
  87.                 if ( command == 5 ) {//removeLast(int k)
  88.                     s.removeLast(jin.nextInt());
  89.                 }
  90.                 if ( command == 6 ) {//end
  91.                     break;
  92.                 }
  93.             }
  94.         }
  95.     }
  96.  
  97. }
Advertisement
Add Comment
Please, Sign In to add comment