Advertisement
saurav_kalsoor

Finding Kth Smallest - JAVA

May 19th, 2022
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.38 KB | None | 0 0
  1. //Author - Saurav Kalsoor
  2. // Finding Kth Smallest - JAVA
  3.  
  4. import java.util.Vector;
  5. import java.util.*;
  6.  
  7. public class Test {
  8.    
  9.     static Scanner sc = new Scanner(System.in);
  10.    
  11.     public static void swap(char ch[],int i,int j) {
  12.         char temp = ch[i];
  13.         ch[i] = ch[j];
  14.         ch[j] = temp;
  15.     }
  16.    
  17.     public static void findingAllRearrangements(char ch[],int n,Vector<String> v,int itr){
  18.         if(itr==n-1){
  19.             String s = "";
  20.             for(char i : ch) {
  21.                 s+=i;
  22.             }
  23.             v.add(s);
  24.             return;
  25.         }
  26.         HashSet<Character> hs = new HashSet<Character>();
  27.         for(int i=itr;i<n;i++) {
  28.             if(!hs.contains(ch[i])) {
  29.                 hs.add(ch[i]);
  30.                 swap(ch,itr,i);
  31.                 findingAllRearrangements(ch,n,v,itr+1);
  32.                 swap(ch,itr,i);
  33.             }
  34.         }
  35.     }
  36.  
  37.     public static String findingKthSmallest(int n, int k, String s){
  38.         char ch[] = s.toCharArray();
  39.         Vector<String> v = new Vector<String>();
  40.         findingAllRearrangements(ch,n,v,0);
  41.         Collections.sort(v);
  42.         if(k<=v.size()) {
  43.             return v.get(k-1);
  44.         }
  45.         return "-1";
  46.     }
  47.    
  48.     public static void main(String[] args) {
  49.         int n = sc.nextInt();
  50.         int k = sc.nextInt();
  51.         String s = sc.next();
  52.        
  53.         System.out.println(findingKthSmallest(n,k,s));
  54.     }
  55.  
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement