Advertisement
saurav_kalsoor

Shifting Compartments - JAVA

Sep 27th, 2022
842
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Author : Saurav Kalsoor
  2. // Shifting Compartments - JAVA
  3.  
  4.  
  5. import java.util.*;
  6.  
  7. public class Test {
  8.  
  9.     static Scanner sc = new Scanner(System.in);
  10.     public static void main(String[] args) {
  11.         int n = sc.nextInt();
  12.         int q = sc.nextInt();
  13.  
  14.         String str = sc.next();
  15.    
  16.         ArrayList<Integer> l = new ArrayList<>();
  17.         ArrayList<Integer> r = new ArrayList<>();
  18.         ArrayList<Integer> k = new ArrayList<>();
  19.        
  20.         for(int i=0; i < q ;i++){
  21.             l.add(sc.nextInt());
  22.             r.add(sc.nextInt());
  23.             k.add(sc.nextInt());
  24.         }
  25.    
  26.         System.out.println(shiftingCompartments(n, q, str, l, r, k));
  27.     }
  28.    
  29.     public static String shiftingCompartments(int n, int q, String s, ArrayList<Integer> l, ArrayList<Integer> r, ArrayList<Integer> k){
  30.         char[] str = s.toCharArray();
  31.  
  32.         for(int i=0; i < q; i++){
  33.             cycle(str, l.get(i), r.get(i), k.get(i));
  34.         }
  35.  
  36.         return String.valueOf(str);
  37.     }
  38.  
  39.     public static void myReverse(char[] str, int i, int j){
  40.         while(i < j){
  41.             char temp = str[i];
  42.             str[i] = str[j];
  43.             str[j] = temp;
  44.             i++;
  45.             j--;
  46.         }
  47.     }
  48.  
  49.     public static void cycle(char[] str, int l, int r, int k){
  50.         int n = r-l+1;
  51.         k = k%n;
  52.         myReverse(str, l, l+n-k-1);
  53.         myReverse(str, l+n-k, r);
  54.         myReverse(str, l, r);
  55.     }
  56. }
  57.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement