Задача: Ряд клавиатуры

Задача: Ряд клавиатуры

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
}





Report Page