摘要:同时使用方法将数组转化为并利用的直接比较两个字符串是否相等。通过这种方法效率值提高了不少。
题目要求
Given an array of strings, group anagrams together. For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"], Return: [ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ] Note: All inputs will be in lower-case.
将含有相同的字母但是排序可能不同的单词分类至不同的数组
思路一:不使用map(超时了)这里利用了String的API方法toCharArray来对两个单词是否是相同字母组成的进行比较。但是效率较低。这里有重复的无效操作,例如获得当前数组的第一个值并重新计算其对应的有序char数组。而且比较两个char数组的方法造成了三圈循环,带来的O(n3)的时间复杂度
public List> groupAnagrams(String[] strs) { List
> result = new LinkedList
>(); L1:for(int i = 0 ; i < strs.length ; i++){ String temp = strs[i]; int tempLength = temp.length(); L2:for(int j = 0 ; j
currentList = result.get(j); String currentString = currentList.get(0); int currentStringLength = currentString.length(); if(currentStringLength>tempLength){ List newResult = new ArrayList (); newResult.add(temp); result.add(j, newResult); continue L1; }else if (currentStringLength newResult = new ArrayList (); newResult.add(temp); result.add(newResult); } return result; } public boolean isPermutation(String s1, String s2){ if(s1.length() != s2.length()){ return false; } char[] s1array = s1.toCharArray(); Arrays.sort(s1array); char[] s2array = s2.toCharArray(); Arrays.sort(s2array); for(int i = 0 ; i 思路二:利用String.valueof 其实在这里利用Map会减少重复的生成char数组的过程。同时使用String.valueof()方法将char数组转化为String并利用String的API直接比较两个字符串是否相等。通过这种方法效率值提高了不少。
public List> groupAnagrams2(String[] strs){ Map
> map = new HashMap >(); for(String temp : strs){ char[] current = temp.toCharArray(); Arrays.sort(current); String sortedTemp = String.valueOf(current); if(!map.containsKey(sortedTemp)){ List tempResult = new ArrayList (); tempResult.add(temp); map.put(sortedTemp, tempResult); }else{ map.get(sortedTemp).add(temp); } } return new ArrayList >(map.values()); }
想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注我的微信公众号!将会不定期的发放福利哦~
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/70056.html
摘要:不需要关注输出的顺序,所有的输入都是小写。的就是经过排序后的字符数组所对应的字符串。因为不需要考虑输出的顺序,所以遍历完直接输出中的所有值即可。解法边界情况判断如果存在相同组成的元素 题目详情 Given an array of strings, group anagrams together.题目要求输入一个字符串数组,我们要将由同样字母组成的字符串整理到一起,然后以如下例子中的格式...
摘要:我们将每个词排序后,根据这个键值,找到哈希表中相应的列表,并添加进去。 Group Anagrams 最新更新请见:https://yanjia.me/zh/2019/01/... Given an array of strings, group anagrams together. For example, given: [eat, tea, tan, ate, nat, bat...
摘要:也就是同构异形体。特点是有相同数量的组成。素数可以素数表。这里使用而不是可以避免最后从导出结果的时间。修改了和得到的方法,其他都一样。但是会有解不了的地方。还有个特殊情况就是不是一组。如果数字编码出来都是如果用编码,出现的就是。 49 Group Anagrams Given an array of strings, group anagrams together. For examp...
摘要:题目解答遇到这种要求一个的集合,首先想到的就是。那么被的作为把有同样的以的形式放到里,然后输出。 题目:Given an array of strings, group anagrams together. For example, given: [eat, tea, tan, ate, nat, bat], Return: [ [ate, eat,tea], [nat,tan],...
Problem Given an array of strings, group anagrams together. Example: Input: [eat, tea, tan, ate, nat, bat], Output: [ [ate,eat,tea], [nat,tan], [bat] ] Note: All inputs will be in lowercase.The ...
阅读 3134·2021-11-10 11:35
阅读 1280·2019-08-30 13:20
阅读 1100·2019-08-29 16:18
阅读 2101·2019-08-26 13:54
阅读 2132·2019-08-26 13:50
阅读 940·2019-08-26 13:39
阅读 2454·2019-08-26 12:08
阅读 1937·2019-08-26 10:37