[Leetcode] 500. 鍵盤行 java hashmap
阿新 • • 發佈:2018-11-08
給定一個單詞列表,只返回可以使用在鍵盤同一行的字母打印出來的單詞。鍵盤如下圖所示。
示例:
輸入: ["Hello", "Alaska", "Dad", "Peace"] 輸出: ["Alaska", "Dad"]
注意:
- 你可以重複使用鍵盤上同一字元。
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 } }