Advertisement
vkazar

Untitled

Sep 29th, 2023
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.33 KB | None | 0 0
  1. package sprint4.tasks.H
  2.  
  3. fun main() {
  4.     val first = readln().strangeMap()
  5.     val second = readln().strangeMap()
  6.     if (first.contentEquals(second)) println("YES")
  7.     else println("NO")
  8. }
  9.  
  10. private fun String.strangeMap(): IntArray {
  11.     // Общая идея: абстрагироваться от конкретных символов.
  12.     // составить список встречаемых символов, но замапленных на порядковый номер встречи в строке
  13.  
  14.     // хранит в себе маппинг символов на число
  15.     val mapping = mutableMapOf<Char, Int>()
  16.     // Сюда добавляем смапленные (абстрагированные) символы
  17.     val res = IntArray(length)
  18.  
  19.     // хранилище следующего добавляемого маппера
  20.     for ((nextMapper, i) in indices.withIndex()) {
  21.         val ch = this[i]
  22.         // если буква ещё не встречалась, добавляем в маппинг
  23.         mapping.putIfAbsent(ch, nextMapper)
  24.         //d результат добавляем маппер символа
  25.         res[i] = mapping[ch]!!
  26.     }
  27.  
  28.     //сам порядок нам не важен, достаточно сравнить хешкоды
  29.     return res
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement