1. 程式人生 > >[Leetcode] 500. 鍵盤行 java hashmap

[Leetcode] 500. 鍵盤行 java hashmap

給定一個單詞列表,只返回可以使用在鍵盤同一行的字母打印出來的單詞。鍵盤如下圖所示。

 

American keyboard

 

示例:

輸入: ["Hello", "Alaska", "Dad", "Peace"]
輸出: ["Alaska", "Dad"]

 

注意:

  1. 你可以重複使用鍵盤上同一字元。

     2.你可以假設輸入的字串將只包含字母

class Solution {
    public String[] findWords(String[] words) {
        HashMap<Character,Integer> map=new HashMap<Character,Integer>();
        String[] s={"qwertyuiop","asdfghjkl","zxcvbnm"};
        for(int i=0;i<s.length;i++){//把鍵盤的三行分別放到hashmap中
            for(char j:s[i].toCharArray()){
                map.put(j,i);
            }
        }
        int index=0;
        List<String> list=new ArrayList<>();//新建list用於返回結果
        for(String i:words){
            if(i=="") continue;//words中遇到空字串,跳出本次迴圈
            index=map.get(i.toLowerCase().toCharArray()[0]);
            //取非空字串的首字元,得到它的value。
            for(char j:i.toLowerCase().toCharArray()){
            //將當前字串剩下的字元與第一個字元的value作比較
                if(map.get(j)!=index){//有不相等的字元
                    index=-1;
                    break;
                }
            }
            if(index!=-1) list.add(i);//字串全部來自鍵盤同一行。
        }
        return list.toArray(new String[list.size()]);//list轉為array,型別是string
    }
}