LeetCode 第49題 字母異位詞分組
阿新 • • 發佈:2018-11-15
兩個 add arraylist 等於 說明 順序 外部 字符串排序 sort
(一) 題目描述
給定一個字符串數組,將字母異位詞組合在一起。字母異位詞指字母相同,但排列不同的字符串。
示例:
輸入: ["eat", "tea", "tan", "ate", "nat", "bat"]
,
輸出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
說明:
- 所有輸入均為小寫字母。
- 不考慮答案輸出的順序。
(二) 解題思路
1 什麽是字母異位詞?
就是兩個單詞包含相同的字母,但是順序不一樣,則成為字母異位詞.
toCharArray() 方法將字符串轉換為字符數組。
String.valueOf(xxx) 將xxx轉換為String 類型
2 算法思路
使用HashMap的鍵值對形式
將排序字符串 作為一個 K
將初始輸入的字符串列表 作為 值(V 對其排序後等於K)
3 繪圖一張
(三)LeetCode AC代碼
排序數組分類
class Solution { public List<List<String>> groupAnagrams(String[] strs) { if(strs.length==0)return new ArrayList(); Map<String,List> ans = new HashMap<String,List>(); for(String s : strs){ char[] ca = s.toCharArray(); Arrays.sort(ca); String key = String.valueOf(ca); if(!ans.containsKey(key)) ans.put(key,new ArrayList()); ans.get(key).add(s); } return new ArrayList(ans.values()); } }
復雜度分析:
- 時間復雜度:O(NK logK),其中N是strs的長度,而K是strs中字符串的最大長度.當我們遍歷每個字符串時,外部循環具有的復雜度為O(N).然後,我們在O(KlogK)的時間內對每個字符串排序.
- 空間復雜度:O(NK),排序存儲在ans中的全部信息內容.
當生活需要讓你成長的時候,
總會讓你遇到一些讓你不順心的人或事
LeetCode 第49題 字母異位詞分組