Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Листи (5)
- * Супер-стринг Problem 1 (0 / 0)
- *
- Треба да се напише класа SuperString. Класата во позадина претставува листа на стрингови LinkedList<String> и ги нуди
- следните методи:
- SuperString() - креира празен стринг
- append(String s) - го додава стрингот на крајот во листата
- insert(String s) - го додава стрингот на почеток на листата
- contains(String s):boolean - враќа true доколку стрингот s се наоѓа во супер-стрингот. Стрингот s може да е разделен во
- повеќе подстрингови во листата. Пр: list = [ "st" , "arz" , "andrej" ] , contains("tarzan") –> true
- reverse() - го превртува стрингот на следниов начин. Ги превртува сите елементи во листата, а потоа и секој подстринг
- како елемент посебно го превртува. list = [ "st" , "arz" , "andrej: ]; reverse(); list = [ "jerdna", "zra", "ts"]
- toString():String - ги враќа конкатенирани сите елементи во листата
- list = [ "st" , "arz" , "andrej"]; toString() -> "starzandrej"
- removeLast(int k) – ги отстранува последнo додадените k подстрингови
- Sample input
- 0
- 1 ej`
- 0 Gaj
- 1 r
- 0 du
- 1 d
- 1 n
- 1 A
- 0 K
- 2 aj
- 2 Gaj
- 2 Gajd
- 2 Gajdu
- 2 GajduK
- 2 Gajduk
- 2 Gajdur
- 2 Gajdun
- 2 ej`GajrdudnAK
- 2 An
- 2 Kassandra
- 2 dnA
- 2 Kand
- 2 ejGaj
- 2 Andrej`GajduK
- 6
- Sample output
- true
- true
- true
- true
- true
- false
- false
- false
- false
- true
- false
- false
- false
- false
- true*/
- import java.util.Scanner;
- import java.util.LinkedList;
- import java.util.Stack;
- class SuperString {
- private LinkedList<String> strings;
- private Stack<String> history;
- public SuperString() {
- strings = new LinkedList<>();
- history = new Stack<>();
- }
- public void append(String s){
- strings.addLast(s);
- history.push(s);
- }
- public void insert(String s){
- strings.addFirst(s);
- history.push(s);
- }
- public boolean contains(String s){
- return this.toString().contains(s);
- }
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- for (String s : strings) {
- sb.append(s);
- }
- return sb.toString();
- }
- public void reverse(){
- LinkedList<String> reversed = new LinkedList<String>();
- String str = null;
- while (!strings.isEmpty()){
- str = strings.getLast();
- str = reverseString(str);
- reversed.addLast(str);
- strings.removeLast();
- }
- for (String s : reversed) {
- strings.addLast(s);
- }
- }
- private String reverseString(String s){
- StringBuilder sb = new StringBuilder(s);
- return sb.reverse().toString();
- }
- public void removeLast(int k){
- while (k>0){
- String toRemove = history.pop();
- strings.remove(toRemove);
- String toRemoveReversed = reverseString(toRemove);
- strings.remove(toRemoveReversed);
- k--;
- }
- }
- }
- public class SuperStringTest {
- public static void main(String[] args) {
- Scanner jin = new Scanner(System.in);
- int k = jin.nextInt();
- if ( k == 0 ) {
- SuperString s = new SuperString();
- while ( true ) {
- int command = jin.nextInt();
- if ( command == 0 ) {//append(String s)
- s.append(jin.next());
- }
- if ( command == 1 ) {//insert(String s)
- s.insert(jin.next());
- }
- if ( command == 2 ) {//contains(String s)
- System.out.println(s.contains(jin.next()));
- }
- if ( command == 3 ) {//reverse()
- s.reverse();
- }
- if ( command == 4 ) {//toString()
- System.out.println(s);
- }
- if ( command == 5 ) {//removeLast(int k)
- s.removeLast(jin.nextInt());
- }
- if ( command == 6 ) {//end
- break;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement