程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> LeetCode Group Anagrams

LeetCode Group Anagrams

編輯:關於C++

LeetCode解題之Group Anagrams


原題

將所含字母相同,但排列順序不同的字符串歸並到一起。

注意點:

所有輸入的字符都是小寫的 返回結果中每個組的字符串都要按照字典序排列

例子:

輸入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]

輸出: [
[“ate”, “eat”,”tea”],
[“nat”,”tan”],
[“bat”]
]

解題思路

將每個字符串排序,並把排序後相同的字符串歸為一組,將每組字符串排序後即為所要的結果。

AC源碼

class Solution(object):
    def groupAnagrams(self, strs):
        """
        :type strs: List[str]
        :rtype: List[List[str]]
        """
        map = {}
        for i, v in enumerate(strs):
            target = "".join(sorted(v))
            if target not in map:
                map[target]=[v]
            else:
                map[target].append(v)

        result = []
        for value in map.values():
            result += [sorted(value)]
        return result


if __name__ == "__main__":
    assert Solution().groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"]) == [['nat', 'tan'], ['bat'],
                                                                                    ['ate', 'eat', 'tea']]
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved