sjz住房建设局网站,wordpress清理,Wordpress html5 动画,湖州住房建设部网站今天我来给大家分享的是leetcode49的解题思路#xff0c;题目描述如下 如果没有做过leetcode242题目的同学#xff0c;可以先把它做了#xff0c;会更好理解异位词的概念。 本道题的大题思路是#xff1a; 首先遍历strs#xff0c;然后统计每一个数组元素出现的次数#…今天我来给大家分享的是leetcode49的解题思路题目描述如下 如果没有做过leetcode242题目的同学可以先把它做了会更好理解异位词的概念。 本道题的大题思路是 首先遍历strs然后统计每一个数组元素出现的次数之后在用一个标识将它作为key然后存入map。 我觉得结合代码来理解更好理解。 代码如下
public ListListString groupAnagrams(String[] strs) {MapString,ListString map new HashMap();for (String str : strs) {int arr[] new int[26];for (int i 0;istr.length();i){arr[str.charAt(i)-a];}StringBuffer st new StringBuffer();for (int i 0;i26;i){if (arr[i]!0){st.append(ai);st.append(arr[i]);}}String key st.toString();ListString list map.getOrDefault(key, new ArrayListString() );list.add(str);map.put(key,list);}return new ArrayListListString(map.values());}我们先看第一个for循环它的目的是统计eat每个字母出现的次数。 然后继续往下走 第二个for循环的目的是遍历arr然后并为每个字母打上一个标识比如eat经历过这个for循环之后结果就是a1e1t1并将它作为后续map的key因为异位词不看顺序只看出现的次数。 然后我们继续往下走
ListString list map.getOrDefault(key, new ArrayListString());这段代码的含义这个非常重要。 然后将str加入到list中并将a1e1t1作为map的keyvalue就是这个list。 如果是字母异位词那么他们ListString list map.getOrDefault(key, new ArrayListString());这里的list应该是同一个list那么list集合中的数据就是同一组的有效字母异位词。 总体的三步走 1.统计每个字母出现的次数 2.为每个str赋予一个标识key 3.通过这个key看map是否已经有数据。 到此本题的讲解结束本道题我建议大家结合代码去看因为只看思路确实有点思路。