网站地图制作视频教程,潮州网站设计,国际数据公司,网站建设应该列入什么科目给你一个字符串数组#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。我的解法#xff0c;是错误解法#xff0c;只能通过 56 / 126 的测试用例
这个题就是想求#xff0c;用到的所有字…给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。我的解法是错误解法只能通过 56 / 126 的测试用例
这个题就是想求用到的所有字母一样可以组成不同的字符串。将这样的字符串排成一个list。 我想的是肯定得把一个字符串拆开成一个一个字母才能和别的字符串比较。但是想简单了比较的时候用的list的containsAll方法也就是字符串包含另一个字符串中的所有字符。 其实是不行的因为同一个字符出现多次的时候就能满足包含关系但次数关系没有得到统计。我没通过的测试案例及错误代码。
[“ddddddddddg”,“dgggggggggg”]
class Solution {public ListListString groupAnagrams(String[] strs) {ListList list new ArrayListList();for (int i 0; i strs.length; i) {char[] splitStr strs[i].toCharArray();List splitList new ArrayListString();for (int j 0; j splitStr.length; j) {splitList.add(splitStr[j]);}list.add(splitList);}ListListString res new ArrayListListString();int[] flag new int[strs.length];for (int k 0; k list.size(); k) {ListString temp new ArrayListString();if (flag[k] 0) {temp.add(strs[k]);flag[k] 1;}for (int g k 1; g list.size(); g) {if (list.get(k).containsAll(list.get(g)) list.get(k).size() list.get(g).size() flag[g] 0) {temp.add(strs[g]);flag[g] 1;}}if (temp.size() ! 0) {res.add(temp);}}return res;}
}其实之前想过将每个字符串按字母映射成一个26个字母的数组来统计次数。然后满足条件的字母异位词的这种数组是相同的。但是总觉得这种题应该去用集合解而且忘记了怎么从字母映射成数组下标的方法用counts[str.charAt(i) - ‘a’]。。。也想过按单个字符排序之后的字符串是相同的但是没想到怎么去排序用Arrays.sort()又觉得要把每个排序后的字符串存下来然后去和后面每个排序后的字符串比。
官方解法 1.再次用到了使用Map来避免一次循环比较 2. List list map.getOrDefault(key, new ArrayList()); 这句话的意思是如果这个key下存在value就返回value如果不存在就new一个List。非常好的一种写法。 3. 两个需要学习的方法 char[] array str.toCharArray();注意返回值是char[]类型的也可以用split()返回也是char[] Arrays.sort(array); 4. 千万不能定义一个 ListList res然后在循环中res.add(list)这样会导致能匹配上的词组多次输出。使用return new ArrayListList(map.values()); 也是一个技巧map.values直接将List初始化了。 class Solution {public ListListString groupAnagrams(String[] strs) {MapString, ListString map new HashMapString, ListString();for (String str : strs) {char[] array str.toCharArray();Arrays.sort(array);String key new String(array);ListString list map.getOrDefault(key, new ArrayListString());list.add(str);map.put(key, list);}return new ArrayListListString(map.values());}
}作者力扣官方题解
链接https://leetcode.cn/problems/group-anagrams/solutions/520469/zi-mu-yi-wei-ci-fen-zu-by-leetcode-solut-gyoc/
来源力扣LeetCode
著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。