Given a List of words, return the words that can be typed using letters of alphabet on only one row's of American keyboard like the image below.
Example 1:
Input: ["Hello", "Alaska", "Dad", "Peace"] Output: ["Alaska", "Dad"]
Note:
- You may use one character in the keyboard more than once.
- You may assume the input string will only contain letters of alphabet.
1 public class Solution { 2 public String[] findWords(String[] words) { 3 List<String> result = new ArrayList<String>(); 4 Character[] row1 = {'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'}; 5 Character[] row2 = {'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'}; 6 Character[] row3 = {'Z', 'X', 'C', 'V', 'B', 'N', 'M'}; 7 List<Character> list1 = Arrays.asList(row1); 8 List<Character> list2 = Arrays.asList(row2); 9 List<Character> list3 = Arrays.asList(row3); 10 11 for (String word : words) { 12 String newWord = word.toUpperCase(); 13 14 int i = 0, key = -1, n = newWord.length(); 15 int counter1 = 0, counter2 = 0, counter3 = 0; 16 while (i < n) { 17 if (list1.contains(newWord.charAt(i))) counter1++; 18 else if (list2.contains(newWord.charAt(i))) counter2++; 19 else if (list3.contains(newWord.charAt(i))) counter3++; 20 21 i++; 22 } 23 24 if (counter1 == n || counter2 == n || counter3 == n) 25 result.add(word); 26 } 27 return result.toArray(new String[result.size()]); 28 } 29 }