On se retrouve aujourd'hui pour la solution du précédent #KataOfTheWeek proposé par Renaud en début de semaine !
Une petite solution en Kotlin :
fun main(args: Array<String>) {
val s = readLine()!!
val queriesCount = readLine()!!.trim().toInt()
val queries = Array<Int>(queriesCount, { 0 })
for (i in 0 until queriesCount) {
val queriesItem = readLine()!!.trim().toInt()
queries[i] = queriesItem
}
val result = weightedUniformStrings(s, queries)
println(result.joinToString("\n"))
}
fun weightedUniformStrings(s: String, queries: Array<Int>): Array<String> {
val weights: MutableSet<Int> = mutableSetOf()
var cursor = 0
var index = 0
while(index < s.length) {
while(cursor < s.length && s[cursor] == s[index]) {
weights.add((s[index].toInt() - 96) * (cursor - index + 1))
cursor++
}
index = cursor
}
return queries.map { if (weights.contains(it)) "Yes" else "No" }.toTypedArray()
}
A bientôt pour un nouveau #KataOfTheWeek !