5 mins 搞定
但是一些 基本数据结构的 基本考察 还是需要经常练习
1. str
str -> list of char: list(my_str)
2.list function
sort in place: my_str.sort()
3. str function and list function
concatenate elem to a str: "".join(my_arr)
4. map/dict function:
check key in map.keys(), if K in map.keys():
5. map/dict fucntion:
iterate all keys/value: map.keys(), map.values()
class Solution(object):
def groupAnagrams(self, strs):
"""
:type strs: List[str]
:rtype: List[List[str]]
"""
# Need a map <transformed_str, list[str]>
# transformed_str = transform(str) # re-order the letters, then form a string
# go thru strs, construct the map
# map.values --> list --> return
anagrams_map = {}
for word in strs:
transformed = self.transform(word)
if transformed in anagrams_map.keys():
anagrams_map[transformed].append(word)
else:
anagrams_map[transformed] = [word]
return anagrams_map.values()
def transform(self, word):
word_arr = list(word)
word_arr.sort()
transformed = "".join(word_arr)
return transformed
def main():
solution = Solution()
# test 1
words1 = ["abc", "bca", "hill", "lihl"]
expected1 = [["abc", "bca"], ["hill", "lihl"]]
# assert(solution.groupAnagrams(words1) == expected1) # list cannot be compared.
print(solution.groupAnagrams(words1))
# test 2
words2 = ["ab", "bca", "green", "eenrg", "a", "b"]
expected2 = [["a"], ["b"], ["ab"], ["bca"], ["green", "eenrg"]]
print(solution.groupAnagrams(words2))
# test 3
words3 = [""]
expected3 = [[""]]
print(solution.groupAnagrams(words3))
if __name__ == "__main__":
main()