Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Given an array of strings strs
, group the anagrams together. You can return the answer in any order.
An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
Example 1:
Input: strs = ["eat","tea","tan","ate","nat","bat"]
Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
Example 2:
Input: strs = [""]
Output: [[""]]
Example 3:
Input: strs = ["a"]
Output: [["a"]]
Constraints:
1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i]
consists of lowercase English letters.def groupAnagrams(self, strs):
d = {}
for w in sorted(strs):
key = tuple(sorted(w))
d[key] = d.get(key, []) + [w]
return d.values()
private static final int[] PRIMES = new int[]{2, 3, 5, 7, 11 ,13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 107};
public List<String> anagrams(String[] strs) {
List<String> list = new LinkedList<>();
Map<Integer, List<String>> mapString = new HashMap<>();
int result = -1;
for (int i = 0; i < strs.length; i++){
int mapping = 1;
for (int j = 0, max = strs[i].length(); j < max; j++) {
mapping *= PRIMES[strs[i].charAt(j) - 'a'];
}
List<String> strings = mapString.get(mapping);
if (strings == null) {
strings = new LinkedList<>();
mapString.put(mapping, strings);
}
strings.add(strs[i]);
}
for (List<String> mapList : mapString.values()){
if (mapList.size() > 1)
list.addAll(mapList);
}
return list;
}
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
// Base case
if(strs.size() == 1)
return {{strs[0]}};
vector<vector<string>> ans;
unordered_map<string, vector<string>> M;
for(int i = 0; i < strs.size(); i++)
{
string str = strs[i];
sort(strs[i].begin(), strs[i].end()); // Sorting the string
M[strs[i]].push_back(str); // Sorted string is the key and the value is the initial string
}
for(auto i = M.begin(); i != M.end(); i++)
ans.push_back(i -> second); // Traversing the map and adding the vectors of string to ans
return ans;
}
};
const groupAnagrams = strs => {
const map = {};
for (let str of strs) {
const key = [...str].sort().join('');
if (!map[key]) {
map[key] = [];
}
map[key].push(str);
}
return Object.values(map);
};
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
h = {}
for word in strs:
sortedWord = ''.join(sorted(word))
if sortedWord not in h:
h[sortedWord] = [word]
else:
h[sortedWord].append(word)
final = []
for value in h.values():
final.append(value)
return final
In our experience, we suggest you solve this Group Anagrams LeetCode Solution and gain some new skills from Professionals completely free and we assure you will be worth it.
If you are stuck anywhere between any coding problem, just visit Queslers to get the Group Anagrams LeetCode Solution
I hope this Group Anagrams LeetCode Solution would be useful for you to learn something new from this problem. If it helped you then don’t forget to bookmark our site for more Coding Solutions.
This Problem is intended for audiences of all experiences who are interested in learning about Data Science in a business context; there are no prerequisites.
Keep Learning!
More Coding Solutions >>