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.
implements.1
public static String[] findWords(String[] words) {
String a1[] = { "q", "w", "e", "r", "t", "y", "u", "i", "o", "p" };
String a2[] = { "a", "s", "d", "f", "g", "h", "j", "k", "l" };
String a3[] = { "z", "x", "c", "v", "b", "n", "m" };
char ch[];
int i1 = 0;
int i2 = 0;
int i3 = 0;
List<String> list = new ArrayList<String>();
for (String str : words) {
ch = str.toLowerCase().toCharArray();
for (char c : ch) {
if (Arrays.asList(a1).contains(String.valueOf(c))) {
i1++;
if (i1 == ch.length) {
list.add(str);
continue;
}
}
}
for (char c : ch) {
if (Arrays.asList(a2).contains(String.valueOf(c))) {
i2++;
if (i2 == ch.length) {
list.add(str);
continue;
}
}
}
for (char c : ch) {
if (Arrays.asList(a3).contains(String.valueOf(c))) {
i3++;
if (i3 == ch.length) {
list.add(str);
continue;
}
}
}
i1 = 0;
i2 = 0;
i3 = 0;
}
return list.toArray(new String[] {});
}
implements.2
public static String[] findWordss(String[] words) {
return Stream.of(words).filter(s -> s.toLowerCase().matches("[zxcvbnm]*|[asdfghjkl]*|[qwertyuiop]*"))
.toArray(String[]::new);
}
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章