LeetCode--Keyboard Row

思路:

    建立三个Set,判断每个词

class Solution {
    public String[] findWords(String[] words) {
        List<String> list = new ArrayList<>();
        for (String word : words) {
            if (valid(word)) {
                list.add(word);
            }
        }
        String[] ans = new String[list.size()];
        for (int i = 0; i < list.size(); i++) {
            ans[i] = list.get(i);
        }
        return ans;
    }
    
    public boolean valid(String word) {
        Set<Character> set1 = new HashSet<>(Arrays.asList('q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'));
        Set<Character> set2 = new HashSet<>(Arrays.asList('a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'));
        Set<Character> set3 = new HashSet<>(Arrays.asList('z', 'x', 'c', 'v', 'b', 'n', 'm'));
        boolean[] flag = new boolean[3];
        Arrays.fill(flag, true);
        for (char c : word.toLowerCase().toCharArray()) {
            if (!set1.contains(c)) {
                flag[0] = false;
            }
            if (!set2.contains(c)) {
                flag[1] = false;
            }
            if (!set3.contains(c)) {
                flag[2] = false;
            }
        }
        return flag[0] || flag[1] || flag[2];
    }
}

猜你喜欢

转载自blog.csdn.net/qq_21752135/article/details/80111389
Row