公司网站建设要求,奕腾网站建设,wordpress开源小程序,做h5网站要多少钱【hashmap】【将排序之后的字符串作为哈希表的键】【获取 HashMap 中所有值的集合】Leetcode 49 字母异位词分组 解法1 将排序之后的字符串作为哈希表的键解法2 在解法一的基础上加入了getOrDefault ---------------#x1f388;#x1f388;题目链接#x1f388;#x1f3… 【hashmap】【将排序之后的字符串作为哈希表的键】【获取 HashMap 中所有值的集合】Leetcode 49 字母异位词分组 解法1 将排序之后的字符串作为哈希表的键解法2 在解法一的基础上加入了getOrDefault ---------------题目链接------------------- 在Java中数组是不可用作HashMap的键的因为数组的hashCode()方法不会返回数组元素的内容的哈希码。所以应该使用字符串作为键。
解法1 将排序之后的字符串作为哈希表的键
⭐️由于互为字母异位词的两个字符串包含的字母相同因此对两个字符串分别进行排序之后得到的字符串一定是相同的故可以将排序之后的字符串作为哈希表的键。
字符串转化为字符数组char[ ] mychar str.toCharArray() 字符数组转化为字符串String mystring new String(mychar) 字符串排序Arrays.sort( ) 获取 HashMap 中所有值的集合 myhashmap.values() 直接返回 return new ArrayList(myhashmap.values()) class Solution {public ListListString groupAnagrams(String[] strs) {HashMapString, ListString myhashmap new HashMap();for(String str:strs){char[] chararry str.toCharArray();Arrays.sort(chararry); // 排序String strtemp new String(chararry); // 字符数组再次转化为字符串// key是排序后的strtemp value就是最后要返回的列表if(myhashmap.containsKey(strtemp)){ // 如果包含 value就在已有列表基础上添加当前的strListString temp myhashmap.get(strtemp);temp.add(str);myhashmap.put(strtemp,temp);} else{ // 如果不包含那就向hashmap中添加key valueListString temp new ArrayList();temp.add(str);myhashmap.put(strtemp, temp);}}return new ArrayList(myhashmap.values());}
}
解法2 在解法一的基础上加入了getOrDefault
class Solution {public ListListString groupAnagrams(String[] strs) {// 在Java中数组是不可用作HashMap的键的因为数组的hashCode()方法不会返回数组元素的内容的哈希码。所以应该使用字符串作为键。HashMapString, ListString myhashmap new HashMap();for(String str:strs){char[] chararry str.toCharArray();Arrays.sort(chararry); // 排序String strtemp new String(chararry); // 字符数组再次转化为字符串// key是排序后的strtemp value就是最后要返回的列表ListString list myhashmap.getOrDefault(strtemp, new ArrayListString()); // 取出结果的列表list.add(str); // 添加str到列表中myhashmap.put(strtemp,list);}return new ArrayList(myhashmap.values());}
}