Advertisement
vkazar

Untitled

Sep 29th, 2023
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.30 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 == second) println("YES")
  7.     else println("NO")
  8. }
  9.  
  10. private fun String.strangeMap(): Int {
  11.     // Общая идея: абстрагироваться от конкретных символов.
  12.     // составить список встречаемых символов, но замапленных на порядковый номер встречи в строке
  13.  
  14.     // хранит в себе маппинг символов на число
  15.     val mapping = mutableMapOf<Char, Int>()
  16.     // Сюда добавляем смапленные (абстрагированные) символы
  17.     val res = mutableListOf<Int>()
  18.  
  19.     // хранилище следующего добавляемого маппера
  20.     var nextMapper = 0
  21.     for (ch in this) {
  22.         // если буква ещё не встречалась, добавляем в маппинг
  23.         mapping.putIfAbsent(ch, nextMapper++)
  24.         //d результат добавляем маппер символа
  25.         res.add(mapping[ch]!!)
  26.     }
  27.  
  28.     //сам порядок нам не важен, достаточно сравнить хешкоды
  29.     return res.hashCode()
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement