desislava_topuzakova

04. List Operations

Jun 19th, 2021
1,252
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. import java.util.Scanner;
  5. import java.util.stream.Collectors;
  6.  
  7. public class Main {
  8.     public static void main(String[] args) {
  9.         Scanner scanner = new Scanner(System.in);
  10.         //"32 54 21 12 4 0 23" -> split(" ") -> ["32", "54", "21", "12", "4", "0", "23"]
  11.         List<Integer> numbers = Arrays.stream(scanner.nextLine().split(" ")).map(Integer::parseInt).collect(Collectors.toList());
  12.         String command = scanner.nextLine();
  13.         while(!command.equals("End")){
  14.             //•   "Add {number}" - add number at the end
  15.             //•   "Insert {number} {index}" - insert number at given index
  16.             //•   Remove {index} - remove that index
  17.             //•   Shift left {count} - first number becomes last 'count' times
  18.             //•   Shift right {count} - last number becomes first 'count' times
  19.             String[] commandData = command.split("\\s+");
  20.             String commandName = commandData[0];
  21.             switch(commandName) {
  22.                 case "Add":
  23.                     int numberToAdd = Integer.parseInt(commandData[1]);
  24.                     numbers.add(numberToAdd);
  25.                     break;
  26.                 case "Insert":
  27.                     int numberToInsert = Integer.parseInt(commandData[1]);
  28.                     int insertIndex = Integer.parseInt(commandData[2]);
  29.                     if(isValidIndex(insertIndex, numbers.size())) {
  30.                         numbers.add(insertIndex, numberToInsert);
  31.                     } else {
  32.                         System.out.println("Invalid index");
  33.                     }
  34.                     break;
  35.                 case "Remove":
  36.                     int removedIndex = Integer.parseInt(commandData[1]);
  37.                     if(isValidIndex(removedIndex, numbers.size())){
  38.                         numbers.remove(removedIndex);
  39.                     } else {
  40.                         System.out.println("Invalid index");
  41.                     }
  42.                     break;
  43.                 case "Shift":
  44.                     String shiftType = commandData[1]; //left or right
  45.                     int count = Integer.parseInt(commandData[2]);
  46.                     if (shiftType.equals("left")) {
  47.                         shiftLeft(numbers, count);
  48.                     } else if (shiftType.equals("right")) {
  49.                         shiftRight(numbers, count);
  50.                     }
  51.                     break;
  52.             }
  53.  
  54.  
  55.             command = scanner.nextLine();
  56.         }
  57.  
  58.         for (int number : numbers) {
  59.             System.out.print(number + " ");
  60.         }
  61.  
  62.     }
  63.  
  64.     private static void shiftRight(List<Integer> numbers, int count) {
  65.         for (int i = 0; i < count; i++) {
  66.             //взимаме последния елемент -> слагам го на първо място (индекс = 0) -> премахвам от последното място
  67.             int lastElement = numbers.get(numbers.size() - 1);
  68.             numbers.add(0, lastElement);
  69.             numbers.remove(numbers.size() - 1);
  70.         }
  71.     }
  72.  
  73.     private static void shiftLeft(List<Integer> numbers, int count) {
  74.         for (int i = 0; i < count; i++) {
  75.             //взимам първия елемент -> слагам накрая -> премахвам от първото място
  76.             int firstNumber = numbers.get(0);
  77.             numbers.add(firstNumber);
  78.             numbers.remove(0);
  79.         }
  80.  
  81.     }
  82.  
  83.     public static boolean isValidIndex(int index, int size) {
  84.         //true -> е валиден
  85.         //false -> е невалиден
  86.         return index >= 0 && index <= size - 1;
  87.     }
  88. }
  89.  
RAW Paste Data