1
0
Fork 0
mirror of https://gitlab.com/mfocko/LeetCode.git synced 2024-11-09 15:59:06 +01:00

problems: add „387. First Unique Character in a String“

Signed-off-by: Matej Focko <mfocko@redhat.com>
This commit is contained in:
Matej Focko 2022-08-16 11:10:52 +02:00
parent dbb22b755d
commit fa54cd1335
Signed by: mfocko
GPG key ID: 7C47D46246790496

View file

@ -0,0 +1,26 @@
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)
}