给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。
示例1:
输入: [“Hello”, “Alaska”, “Dad”, “Peace”]
输出: [“Alaska”, “Dad”]
注意:
你可以重复使用键盘上同一字符。
你可以假设输入的字符串将只包含字母。
public class FindWords {
@Test
public void findWordsTest() {
Assert.assertArrayEquals(new String[] {"Alaska", "Dad"}, findWords(new String[] {"Hello", "Alaska", "Dad", "Peace"}));
}
private String line1 = "qwertyuiop";
private String line2 = "asdfghjkl";
private String line3 = "zxcvbnm";
public String[] findWords(String[] words) {
List<String> collect = Arrays.stream(words)
.filter(w -> w.toLowerCase().chars().allMatch(c -> line1.contains("" + (char) c))
|| w.toLowerCase().chars().allMatch(c -> line2.contains("" + (char) c))
|| w.toLowerCase().chars().allMatch(c -> line3.contains("" + (char) c)))
.collect(Collectors.toList());
return collect.toArray(new String[0]);
}
}
这一段写的不是很好,如果有朋友有更好的做法,请给我留言。