Chaînes pondérées - Solution

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 !

TakiVeille

TakiVeille