## DEV Community

Abhishek Chaudhary

Posted on

# Keyboard Row

Given an array of strings `words`, return the words that can be typed using letters of the alphabet on only one row of American keyboard like the image below.

In the American keyboard:

• the first row consists of the characters `"qwertyuiop"`,
• the second row consists of the characters `"asdfghjkl"`, and
• the third row consists of the characters `"zxcvbnm"`.

Example 1:

Example 2:

Input: words = ["omk"]
Output: []

Example 3:

Input: words = ["adsdf","sfd"]

Constraints:

• `1 <= words.length <= 20`
• `1 <= words[i].length <= 100`
• `words[i]` consists of English letters (both lowercase and uppercase).

SOLUTION:

``````from collections import Counter

class Solution:
def findWords(self, words: List[str]) -> List[str]:
rows = [Counter("qwertyuiop"), Counter("asdfghjkl"), Counter("zxcvbnm")]
op = []
for word in words:
isValid = False
for ctr in rows:
valid = len([c for c in word if ctr[c.lower()] == 0]) == 0
if valid:
isValid = True
break
if isValid:
op.append(word)
return op
``````