网站动态url和静态url的优劣势/软文推广有哪些平台
题目地址:
https://leetcode.com/problems/group-anagrams/
给定一个字符串数组,如果两个字符串所含字母以及每个字母出现的次数相同,则视为等价。要求返回所有等价类。
思路是将等价的字符串统一化为一个代表元作为哈希表的key,然后将等价的元素都放在key对应的value里,最后再归结返回。代码如下:
import java.util.*;public class Solution {public List<List<String>> groupAnagrams(String[] strs) {List<List<String>> res = new ArrayList<>();Map<String, List<String>> map = new HashMap<>();for (String s : strs) {char[] chars = s.toCharArray();// 字符排序后的字符串就成了每个等价类的代表元Arrays.sort(chars);String cur = new String(chars);map.putIfAbsent(cur, new ArrayList<>());map.get(cur).add(s);}for (List<String> list : map.values()) {res.add(list);}return res;}
}
时间复杂度O(nllogl)O(nl\log l)O(nllogl)。