1
0
Fork 0
mirror of https://gitlab.com/mfocko/LeetCode.git synced 2024-09-19 17:56:55 +02:00
LeetCode/problems/first-unique-character-in-a-string.kt
2022-08-16 11:10:52 +02:00

26 lines
662 B
Kotlin

class Solution {
private data class Accumulator(val firstIndex: Int, var count: Int = 0) {
fun add() {
count++
}
}
fun firstUniqChar(s: String): Int = s
.foldIndexed(mutableMapOf<Char, Accumulator>()) { i, acc, c ->
acc.getOrPut(c) { Accumulator(i) }.add()
acc
}
.filterValues { it.count == 1 }
.minByOrNull { (_, acc) -> acc.firstIndex }
?.value
?.firstIndex
?: -1
}
fun main() {
val s = Solution()
check(s.firstUniqChar("leetcode") == 0)
check(s.firstUniqChar("loveleetcode") == 2)
check(s.firstUniqChar("aabb") == -1)
}