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

LeetCode-049-AnagramsGrouping

时间:2023-04-02 01:36:51 Java

AnagramsGrouping题目描述:给定一个字符串数组,将这些字母组合在一起。字谜是一串具有相同字母但排列不同的字符。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:Hash判断需要用hash的方法来判断是否是字谜,所以用Hashmap来判断排序后的字母是否相同。具体过程如下。声明一个Hashmap,即tempResult,用来记录临时结果,其中key是一个anagramword是相同排序的字母串,value是相同错位不同排列的字符串集合。遍历strs:首先将当前str转化为字符数组chars,然后使用Arrays.sort(chars)方法对其进行排序,再将chars字符数组转化为字符串sortedStr,也就是anagram转化而来的同一个字符串,然后判断tempResult的key中是否存在sortedStr。如果不存在,则初始化一个List作为values,并将当前的str加入到list中,然后将对应的key,即sortedStr,以及对应的values放入tempResult;如果tempResult的key中存在sortedStr,则将当前str放入sortedStr对应的list中。然后处理下一个字符串。最后返回给tempResult的值就是最终的结果。importjava.util.*;publicclassLeetCode_049{publicstaticList>groupAnagrams(String[]strs){Map>tempResult=newHashMap<>();for(Stringstr:strs){char[]chars=str.toCharArray();数组排序(字符);字符串sortedStr=String.valueOf(chars);if(tempResult.get(sortedStr)==null){Listvalues=newArrayList<>();值.添加(str);tempResult.put(sortedStr,值);}else{tempResult.get(sortedStr).add(str);}}List>result=newArrayList<>();结果.addAll(tempResult.values());返回结果;}publicstaticvoidmain(String[]args){String[]strs=newString[]{"eat","tea","tan","ate","nat","bat"};列表<列表<字符串>>lists=groupAnagrams(strs);for(Listlist:lists){for(Strings:list){System.out.print(s+"");}System.out.println();}}}【每日留言】生活中总有意想不到的温暖和无尽的希望。无论什么时候都要向前看,充满希望就立于不败之地