Advertisement
saurav_kalsoor

Finding Kth Smallest - KOTLIN

May 19th, 2022
390
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Author - Saurav Kalsoor
  2. // Finding Kth Smallest - KOTLIN
  3.  
  4. import java.util.*
  5. import java.lang.*
  6.  
  7. var sc: Scanner = Scanner(System.`in`)
  8.  
  9. fun main() {
  10.     val n: Int = sc.nextInt()
  11.     val k: Int = sc.nextInt()
  12.     val s: String = sc.next()
  13.     println(findingKthSmallest(n, k, s))
  14. }
  15.  
  16. fun swap(ch: CharArray, i: Int, j: Int) {
  17.     val temp = ch[i]
  18.     ch[i] = ch[j]
  19.     ch[j] = temp
  20. }
  21.  
  22. fun findingAllRearrangements(ch: CharArray, n: Int, v: Vector<String>, itr: Int) {
  23.     if (itr == n - 1) {
  24.         var s: String = ""
  25.         for (i in ch) {
  26.             s += i
  27.         }
  28.         v.add(s)
  29.         return
  30.     }
  31.     val hs: HashSet<Char> = HashSet<Char>()
  32.     for (i in itr until n) {
  33.         if (!hs.contains(ch[i])) {
  34.             hs.add(ch[i])
  35.             swap(ch, itr, i)
  36.             findingAllRearrangements(ch, n, v, itr + 1)
  37.             swap(ch, itr, i)
  38.         }
  39.     }
  40. }
  41.  
  42. fun findingKthSmallest(n: Int, k: Int, s: String): String {
  43.     val ch: CharArray = s.toCharArray()
  44.     val v: Vector<String> = Vector<String>()
  45.     findingAllRearrangements(ch, n, v, 0)
  46.     Collections.sort(v)
  47.     return if (k <= v.size) {
  48.         v.get(k - 1)
  49.     } else "-1"
  50. }
  51.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement