Skip to content

Commit 4d5facb

Browse files
committed
group-anagrams solution
1 parent 5d06533 commit 4d5facb

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
class Solution {
2+
public List<List<String>> groupAnagrams(String[] strs) {
3+
/**
4+
1.anagram ๋ผ๋ฆฌ ๊ทธ๋ฃนํ™”ํ•ด์„œ return
5+
2.์กฐ๊ฑด
6+
- answer in any order
7+
- strs ๊ธธ์ด ์ตœ์†Œ = 1, ์ตœ๋Œ€ = 10^4
8+
- ์›์†Œ ํ•˜๋‚˜๋‹น ๊ธธ์ด ์ตœ์†Œ = 0, ์ตœ๋Œ€ = 100
9+
- ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ
10+
3.ํ’€์ด
11+
- 1) i๋ฒˆ์งธ ์ดํ›„ ๋‹จ์–ด๋ฅผ ๋น„๊ตํ•ด๊ฐ€๋ฉด์„œ anagram check, time: O(n^2)
12+
- 2) HashMap: string element ๋ฅผ ์ •๋ ฌํ•ด์„œ key ๋กœ ์‚ฌ์šฉ, ์ค‘๋ณต๋˜๋Š” Key ์žˆ์œผ๋ฉด anagram, time: O(n)
13+
*/
14+
15+
int n = strs.length;
16+
//anagram ์ฒดํฌํ•  Map
17+
Map<String, List<String>> map = new HashMap<>();
18+
19+
for(int i = 0; i < n; i++) {
20+
String curStr = strs[i];
21+
char[] tmp = curStr.toCharArray();
22+
Arrays.sort(tmp);
23+
String key = new String(tmp);
24+
// System.out.println("curStr:" + curStr + ", key: " + key);
25+
//Map ์— ์ €์žฅ
26+
map.putIfAbsent(key, new ArrayList<>());
27+
map.get(key).add(curStr);
28+
// if(!map.containsKey(key)) {
29+
// List<String> words = new ArrayList<>();
30+
// words.add(curStr);
31+
// map.put(key, words);
32+
// } else {
33+
// List<String> words = map.get(key);
34+
// words.add(curStr);
35+
// map.put(key, words);
36+
// }
37+
}
38+
39+
40+
return new ArrayList<>(map.values());
41+
}
42+
}

0 commit comments

Comments
ย (0)