Problem
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", andthe third row consists of the characters
"zxcvbnm".

Example 1:
Input: words = ["Hello","Alaska","Dad","Peace"]
Output: ["Alaska","Dad"]
Example 2:
Input: words = ["omk"]
Output: []
Example 3:
Input: words = ["adsdf","sfd"]
Output: ["adsdf","sfd"]
Constraints:
1 <= words.length <= 201 <= words[i].length <= 100words[i]consists of English letters (both lowercase and uppercase).
Solution (Java)
class Solution {
private boolean check(String str, String word) {
for (char ch : word.toCharArray()) {
if (str.indexOf(ch) < 0) {
return false;
}
}
return true;
}
public String[] findWords(String[] words) {
List<String> arr = new ArrayList<>();
for (String word : words) {
String w = word.toLowerCase();
if (check("qwertyuiop", w) || check("asdfghjkl", w) || check("zxcvbnm", w)) {
arr.add(word);
}
}
String[] ans = new String[arr.size()];
ans = arr.toArray(ans);
return ans;
}
}
Explain:
nope.
Complexity:
- Time complexity : O(n).
- Space complexity : O(n).