ভিডিওতে দেখো — YouTube @algonur_com
কোড
Python
def groupAnagrams(strs: list[str]) -> list[list[str]]:
from collections import defaultdict
groups = defaultdict(list)
for s in strs:
groups[tuple(sorted(s))].append(s)
return list(groups.values())Java
public List<List<String>> groupAnagrams(String[] strs) {
Map<String, List<String>> map = new HashMap<>();
for (String s : strs) {
char[] arr = s.toCharArray();
Arrays.sort(arr);
String key = new String(arr);
map.computeIfAbsent(key, k -> new ArrayList<>()).add(s);
}
return new ArrayList<>(map.values());
}Kotlin
fun groupAnagrams(strs: Array<String>): List<List<String>> =
strs.groupBy { it.toCharArray().sorted().joinToString("") }.values.toList()C++
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string, vector<string>> map;
for (auto& s : strs) {
string key = s;
sort(key.begin(), key.end());
map[key].push_back(s);
}
vector<vector<string>> res;
for (auto& p : map) res.push_back(p.second);
return res;
}C
// C: sort each string as key, use string comparison grouping
int cmp(const void* a, const void* b) { return *(char*)a - *(char*)b; }
char sortedKey(char* s, char* out, int len) {
for (int i = 0; i < len; i++) out[i] = s[i];
out[len] = '\0';
qsort(out, len, sizeof(char), cmp);
return 0;
}জটিলতা
O(n·k log k)
সময় — অ্যারেটা একবারই ঘুরি, ম্যাপে খোঁজা O(1)।
O(n·k)
জায়গা — সবচেয়ে খারাপ ক্ষেত্রে সব সংখ্যা ম্যাপে থাকে।
আগের সমস্যা← Two Sumপরের সমস্যাTop K Frequent Elements →