Premiumlab  

https://leetcode.com/problems/group-anagrams/#/description

 

Given an array of strings, group anagrams together.

For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"]
Return:

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

 

Note: All inputs will be in lower-case.

 

Sol:

 

class Solution(object):
    def groupAnagrams(self, strs):
        """
        :type strs: List[str]
        :rtype: List[List[str]]
        """
        if len(strs) < 2:
            return [strs]
        
        dic = {}
        for string in strs:
            key = tuple(sorted(string))
            dic[key] = dic.get(key, []) + [string]
        return dic.values()
            
            

 

 

Note:

 

1 dictionary.get(key, default = None) or you can change the default variable to return anything you like when key not found.

 

ex. dic.get(key, [])

 

if key not found, return empty brackets so that it can be added by non-empty brackets. 

 

2 dict.values()  

return all values in the dict as a list 

 

>>> dict = { 1 : 2, 'a' : 'b', 'hello' : 'world' }  
>>> dict.values()  
['b', 2, 'world']  
>>> dict.keys()  
['a', 1, 'hello']  
>>> dict.items()  
[('a', 'b'), (1, 2), ('hello', 'world')]  

 

3 string is not hashable....but we can transform string into tuple using tuple(). 

posted on 2017-07-09 15:14  Premiumlab  阅读(166)  评论(0)    收藏  举报