Решение
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()
}
}