https://leetcode.com/problems/keyboard-row Easy

Решение

class Solution {
    fun findWords(words: Array<String>): Array<String> {
        val row = IntArray(26)
        fun mark(s: String, id: Int) {
            var i = 0
            while (i < s.length) { row[s[i].code - 97] = id; i++ }
        }
        mark("qwertyuiop", 0)
        mark("asdfghjkl", 1)
        mark("zxcvbnm", 2)
        val res = ArrayList<String>()
        var i = 0
        while (i < words.size) {
            val w = words[i]
            if (w.isNotEmpty()) {
                var j = 0
                var r = row[(w[0].code or 32) - 97]
                var ok = true
                while (j < w.length) {
                    val c = w[j].code
                    val idx = (c or 32) - 97
                    if (idx !in 0..25 || row[idx] != r) { ok = false; break }
                    j++
                }
                if (ok) res.add(w)
            }
            i++
        }
        return res.toTypedArray()
    }
}