Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- /*
- Треба да се напише класа 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 подстрингови
- */
- class SuperString {
- LinkedList<String> strings;
- Stack<String> orderedStrings;
- public SuperString() {
- this.strings = new LinkedList<>();
- orderedStrings = new Stack<>();
- }
- public void append(String string) {
- strings.add(string);
- orderedStrings.push(string);
- }
- public void insert(String string) {
- strings.add(0, string);
- orderedStrings.push(string);
- }
- public boolean contains(String string) {
- return this.toString().contains(string);
- }
- public String reverseString(String string){
- StringBuffer sb = new StringBuffer(string);
- return sb.reverse().toString();
- }
- public void reverse(){
- Iterator<String> iterator = strings.descendingIterator();
- LinkedList<String> newStrings = new LinkedList<>();
- while (iterator.hasNext()){
- String toReverse = iterator.next();
- toReverse = reverseString(toReverse);
- newStrings.add(toReverse);
- }
- this.strings = newStrings;
- }
- @Override
- public String toString() {
- StringBuffer sb = new StringBuffer();
- Iterator iterator = strings.iterator();
- while (iterator.hasNext()){
- sb.append(iterator.next());
- }
- return sb.toString();
- }
- public void removeLast(int countRemove){
- for (int i = 0; i < countRemove; i++) {
- String current = orderedStrings.pop();
- String currentReversed = reverseString(current);
- strings.remove(currentReversed);
- strings.remove(current);
- }
- }
- }
- 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