LeetCode ---- 键盘行

给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。

American keyboard

示例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]);
    }

}

这一段写的不是很好,如果有朋友有更好的做法,请给我留言。

猜你喜欢

转载自blog.csdn.net/ydonghao2/article/details/80276938