2016年12月10日 星期六

[LeetCode] 49. Group Anagrams

轉自LeetCode

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.
<Solution>

首先,要了解什麼是 anagram

簡單說,就是一個字串,用同樣的字母再次重新排列

那這題是要將同個 anagram 的所有字串,都放在一起

因為 anagram 就是用樣字母重新排列

所以對於每個字串,都把它 sort 一次,這樣只要是同個 anagram,sort 之後就會一樣

因此就可以用來當作 hash map 的 key,藉此分群 (參考資料)

code 如下

c++

Kotlin

另外一種想法是,因為 anagram 都是用同樣的字母

可以用這些字母出現的次數來做一個 key,再用這個 key 來做 grouping

Kotlin

沒有留言:

張貼留言