Задача: Ряд клавиатуры
https://t.me/Golang_googleУсловие: дается массив из строк, необходимо вернуть те строки из массива, которые могут быть набраны лишь при использовании знаков из одного ряда.
Пример:
Ввод: words = ["Hello","Alaska","Dad","Peace"]
Вывод: ["Alaska","Dad"]
Объяснение:
Ввод: words = ["omk"]
Вывод: [ ]
Решение: Go
func findWords(words []string) []string {
letters := [26]int{}
for _, r := range "qwertyuiop" { letters[r-'a'] = 1 }
for _, r := range "asdfghjkl" { letters[r-'a'] = 2 }
for _, r := range "zxcvbnm" { letters[r-'a'] = 3 }
res := []string{}
for _, word := range words {
w := strings.ToLower(word)
match := true
for i := 1; i < len(w); i++ {
if letters[w[i]-'a'] != letters[w[0]-'a'] { match = false; break }
}
if match { res = append(res, word) }
}
return res
}