键盘行

2021-10-31  本文已影响0人  xialu

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/keyboard-row

题目描述:

给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
美式键盘 中:
第一行由字符 "qwertyuiop" 组成。
第二行由字符 "asdfghjkl" 组成。
第三行由字符 "zxcvbnm" 组成。

示例 1:

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

示例 2:

输入:words = ["omk"]
输出:[]

示例 3:

输入:words = ["adsdf","sfd"]
输出:["adsdf","sfd"]

思路:

遍历words,依次判断每个单词的字符是否在同一键盘行

代码实现:
class Solution {
    public String[] findWords(String[] words) {
        List<String> list = new ArrayList();
        String a = "qwertyuiop";
        String b = "asdfghjkl";
        String c = "zxcvbnm";
        for (String word : words) {
            int len = word.length();
            Set<String> set = new HashSet();
            for (int i = 0; i < len; i++) {
                String str = word.charAt(i) + "";
                if (a.contains(str)) {
                    set.add(a);
                } else if (b.contains(str)) {
                    set.add(b);
                } else if (c.contains(str)) {
                    set.add(c);
                }
            }
            if (set.size() == 1) {
                list.add(word);
            }
        }
        String[] result = new String[list.size()];
        for (int i = 0; i < list.size(); i++) {
            result[i] = list.get(i);
        }

        return result;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读