美文网首页
500. Keyboard Row

500. Keyboard Row

作者: matrxyz | 来源:发表于2018-01-14 08:22 被阅读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.

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.

Solution:Hashmap

思路:
Time Complexity: O(N) Space Complexity: O(N)

Solution Code:

public class Solution {
    public String[] findWords(String[] words) {
        String[] strs = {"QWERTYUIOP","ASDFGHJKL","ZXCVBNM"};
        Map<Character, Integer> map = new HashMap<>();
        for(int i = 0; i<strs.length; i++){
            for(char c: strs[i].toCharArray()){
                map.put(c, i);//put <char, rowIndex> pair into the map
            }
        }
        List<String> res = new LinkedList<>();
        for(String w: words){
            // if(w.equals("")) continue;
            int index = map.get(w.toUpperCase().charAt(0));
            for(char c: w.toUpperCase().toCharArray()){
                if(map.get(c)!=index){
                    index = -1; //don't need a boolean flag. 
                    break;
                }
            }
            if(index!=-1) res.add(w);//if index != -1, this is a valid string
        }
        return res.toArray(new String[0]);
    }
}

相关文章

  • 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/lutkoxtx.html