Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package sprint4.tasks.H
- fun main() {
- val first = readln().strangeMap()
- val second = readln().strangeMap()
- if (first.contentEquals(second)) println("YES")
- else println("NO")
- }
- private fun String.strangeMap(): IntArray {
- // Общая идея: абстрагироваться от конкретных символов.
- // составить список встречаемых символов, но замапленных на порядковый номер встречи в строке
- // хранит в себе маппинг символов на число
- val mapping = mutableMapOf<Char, Int>()
- // Сюда добавляем смапленные (абстрагированные) символы
- val res = IntArray(length)
- // хранилище следующего добавляемого маппера
- for ((nextMapper, i) in indices.withIndex()) {
- val ch = this[i]
- // если буква ещё не встречалась, добавляем в маппинг
- mapping.putIfAbsent(ch, nextMapper)
- //d результат добавляем маппер символа
- res[i] = mapping[ch]!!
- }
- //сам порядок нам не важен, достаточно сравнить хешкоды
- return res
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement