美文网首页
500. Keyboard Row

500. Keyboard Row

作者: 冷殇弦 | 来源:发表于2017-09-29 04:59 被阅读0次

Given a List of words, return the words that can be typed using letters of alphabet on only one row's of American keyboard like the image below.


keyboard

Example 1:

Input: ["Hello", "Alaska", "Dad", "Peace"]
Output: ["Alaska", "Dad"]

Note:
You may use one character in the keyboard more than once.
You may assume the input string will only contain letters of alphabet.


class Solution {
    public String[] findWords(String[] words) {
        String row1 = "qwertyuiop";
        String row2 = "asdfghjkl";
        String row3 = "zxcvbnm";
        ArrayList<String> result = new ArrayList<String>();
        int i = 0;
        for(String word:words){
            int n1 = 0, n2 = 0, n3 = 0;
            for(char c:word.toCharArray()){
                if(row1.indexOf(Character.toLowerCase(c))>=0) n1++;
                if(row2.indexOf(Character.toLowerCase(c))>=0) n2++;
                if(row3.indexOf(Character.toLowerCase(c))>=0) n3++;
                if(n1*n2>0 || n1*n3>0 || n2*n3>0) break;
            }
            if(n1==word.length() || n2==word.length() || n3==word.length()) result.add(word);
        }
        String[] ans = result.stream().toArray(String[]::new);
        return ans;
    }
}

simple one line java solution using regular expression.

class Solution {
    public String[] findWords(String[] words) {
    return Stream.of(words).filter(s -> s.toLowerCase().matches("[qwertyuiop]*|[asdfghjkl]*|[zxcvbnm]*")).toArray(String[]::new);
    }
}

相关文章

  • 500. 键盘行、26. 删除有序数组中的重复项

    500. 键盘行[https://leetcode-cn.com/problems/keyboard-row/] ...

  • 500. Keyboard Row

    原题地址: https://leetcode.com/problems/keyboard-row/descript...

  • 500. Keyboard Row

    啊呀窝草。。尼玛JAVA写的真是烦啊,还不如去写Python算了,人家五六行我得30行。

  • 500. Keyboard Row

    Given a List of words, return the words that can be typed...

  • 500. Keyboard Row

    解法一 使用HashMap 之所以会想到用HashMap是因为对于每个字母,若使用HashMap的方式去查找只有O...

  • 500. Keyboard Row

    Given a List of words, return the words that can be typed...

  • 500. Keyboard Row

    Given a List of words, return the words that can be typed...

  • 500. Keyboard Row

    题目描述:题目描述倒是很简单,给出一个键盘,需要我们判断,给出的一个String[]里面的单词中,每一个单词是否都...

  • 500. Keyboard Row

    思路将同一行的英文字符映射为Map中的同一值,只要比较每个String中的每个字符的Map映射值是否一致即可。 代码

  • [LeetCode]500. Keyboard Row

    题目 Given a List of words, return the words that can be ty...

网友评论

      本文标题:500. Keyboard Row

      本文链接:https://www.haomeiwen.com/subject/wyybextx.html