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

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值