当前位置: 首页 > 后端技术 > Java

LeetCode-500-KeyboardRow

时间:2023-04-02 01:20:09 Java

KeyboardRow题目描述:给你一个字符串数组words,只返回可以使用美式键盘同一行上的字母打印的单词。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode网络所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:遍历字符首先,如果words为null或者words为空数组,则直接返回空数组,即没有满足条件的单词。否则先初始化一个Map为characterMap保存行数和对应行的所有字符,然后遍历words中的单词word:首先获取word中的第一个字符为firstCharacter,判断第一个字符firstCharacter在哪里基于characterMap一行并记录rowNum;然后判断word后面的字符是否都在rowNum行,如果不在,则跳过处理下一个word;如果是,则将该词添加到结果集中。最后返回结果集中的单词。importjava.util.*;/***@Author:ck*@Date:2021/10/310:47上午*/publicclassLeetCode_500{privatestaticfinalMap>characterMap=newHashMap<>();static{characterMap.put(1,newHashSet<>(Arrays.asList(newCharacter[]{'q','w','e','r','t','y','u','我','o','p'})));characterMap.put(2,newHashSet<>(Arrays.asList(newCharacter[]{'a','s','d','f','g','h','j','k','l'})));characterMap.put(3,newHashSet<>(Arrays.asList(newCharacter[]{'z','x','c','v','b','n','m'})));}publicstaticString[]findWords(String[]words){if(words==null||words.length==0){returnnewString[0];}String[]result=newString[words.length];int索引=0,大小=0;for(Stringword:words){if(word==null||word.length()==0){结果[index++]=word;si泽++;继续;}char[]wordArr=word.toCharArray();charfirstCharacter=wordArr[0];int行数=1;for(Map.Entry>characterEntry:characterMap.entrySet()){if(characterEntry.getValue().contains(Character.toLowerCase(firstCharacter))){rowNum=characterEntry.getKey();}休息;}}诠释我;for(i=1;i