# 1. Introduction

The "Group Anagrams" problem is an intriguing challenge that combines elements of string manipulation, hashing, and data organization. It involves grouping words or phrases into anagrams, which are words or phrases formed by rearranging the letters of a different word or phrase, using all the original letters exactly once. This problem is often used to test understanding of hash tables and string processing in programming.

## Problem

Given an array of strings strs, the task is to group the anagrams together. The answer can be returned in any order. An anagram is defined as a word or phrase formed by rearranging the letters of a different word or phrase, using all the original letters exactly once.

# 2. Solution Steps

1. Create a hash table (dictionary in Python) to store groups of anagrams.

2. Iterate through each string in the given array strs.

3. For each string, sort its characters to form a key.

4. Use the sorted string as a key in the hash table and append the original string to the corresponding list.

5. Continue this process for each string in the array.

6. Extract the groups of anagrams from the hash table and return them.

# 3. Code Program

``````def groupAnagrams(strs):
anagrams = {}
for s in strs:
key = tuple(sorted(s))
anagrams.setdefault(key, []).append(s)
return list(anagrams.values())

# Example Usage
print(groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"]))
print(groupAnagrams([""]))

``````

### Output:

```[["eat", "tea", "ate"], ["tan", "nat"], ["bat"]]
[[""]]
```

### Explanation:

1. Anagrams Hash Table: A hash table anagrams is used to group strings that are anagrams of each other.

2. Sorting as Key: Each string is sorted to form a key, under which all its anagrams are grouped.

3. Grouping Anagrams: The original strings are added to lists in the hash table based on their sorted key.

4. Hash Table Usage: The hash table efficiently groups anagrams together by their sorted representation.

5. Output Preparation: The lists of grouped anagrams are extracted from the hash table and returned.

6. Result: The function returns a list of lists, where each inner list contains strings that are anagrams of each other.