力扣(LeetCode)500. 键盘行

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

1234831-20190408114925407-180771538.png

示例:

输入: ["Hello", "Alaska", "Dad", "Peace"]
输出: ["Alaska", "Dad"]

注意:

你可以重复使用键盘上同一字符。
你可以假设输入的字符串将只包含字母。

思路 获取每个单词的每个字母,进行所在行的判定,如果该单词所有字母都在同一行,则添加,否则不添加

java版

class Solution {
    public String[] findWords(String[] words) {
        List<String> list = new LinkedList<>();
        String q = "qwertyuiopQWERTYUIOP";
        String a = "asdfghjklASDFGHJKL";
        String z = "zxcvbnmZXCVBNM";
        int i,j;
        for(i=0;i<words.length;i++) {
            int len = words[i].length();
            int one=0,two=0,three=0;//单词字母所在的行数
            for(j=0;j<len;j++) {
                String s = words[i].substring(j,j+1);
                if(q.contains(s)) {
                    one++;
                }else if(a.contains(s)) {
                    two++;
                }else if(z.contains(s)) {
                    three++;
                }
            }
            // 如果单词每个字母都在同一行,则添加进list
            if(one == len || two == len || three == len) {
                list.add(words[i]);
            }
        }
        
        return list.toArray(new String[list.size()]);
        
    }
}

运行结果

1234831-20190408114957723-1002548484.png

转载于:https://www.cnblogs.com/lick468/p/10669643.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值