Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- import java.util.Collections;
- import java.util.LinkedList;
- import java.util.Stack;
- 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;
- }
- }
- }
- }
- }
- class SuperString {
- private LinkedList<String> lista;
- private Stack<String> last;
- private boolean reversed;
- public SuperString(){
- lista = new LinkedList<>();
- last = new Stack<>();
- reversed = false;
- }
- public void append(String s){
- lista.addLast(s);
- pushStack(s);
- }
- public void insert(String s){
- lista.addFirst(s);
- pushStack(s);
- }
- private void pushStack(String s){
- if(!reversed)
- last.push(s);
- else{
- StringBuilder sb = new StringBuilder();
- sb.append(s);
- sb.reverse();
- last.push(sb.toString());
- }
- }
- @Override
- public String toString(){
- StringBuilder sb = new StringBuilder();
- for(String s : lista){
- sb.append(s);
- }
- return sb.toString();
- }
- public boolean contains(String s){
- String sup = this.toString();
- return sup.contains(s);
- }
- public void reverse(){
- LinkedList<String> tmp = new LinkedList<>();
- for(String s : lista){
- StringBuilder sb = new StringBuilder();
- sb.append(s);
- s=sb.reverse().toString();
- tmp.addFirst(s);
- }
- lista = tmp;
- reversed = !reversed;
- }
- public void removeLast(int k){
- for(int i=0;i<k;i++){
- String s = last.pop();
- if(!reversed)
- lista.remove(s);
- else {
- StringBuilder sb = new StringBuilder();
- sb.append(s);
- sb.reverse();
- s=sb.toString();
- lista.remove(s);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement