500. Keyboard Row(判断字符串字符是否在一行)

来源:互联网 发布:联合国刚果行动知乎 编辑:程序博客网 时间:2024/06/07 02:34

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.


American keyboard


Example 1:

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

Note:

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

Subscribe to see which companies asked this question.


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]);    }}


0 0
原创粉丝点击