Skip to content

Commit 6341418

Browse files
author
eunhwa99
committed
Implement Trie (Prefix Tree)
1 parent 0bc0ac8 commit 6341418

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import java.util.HashMap;
2+
import java.util.Map;
3+
4+
// insert ์‹œ, ๋ฌธ์ž์—ด์˜ prefix๋ฅผ ๋‹ค Map์— ์ €์žฅํ•˜๊ณ , ํ•ด๋‹น ๋ฌธ์ž์—ด์€ prefix ์ด๋ฏ€๋กœ boolean false ๋กœ ์„ค์ •
5+
// prefix๊ฐ€ ์•„๋‹Œ ์˜จ์ „ํ•œ ๋ฌธ์ž์—ด ์‚ฝ์ž…์€ true ๋กœ ์ €์žฅ
6+
7+
// search ์‹œ, Map์— ํ•ด๋‹น ๋‹จ์–ด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , boolean ๊ฐ’์ด true ์ธ์ง€ ํ™•์ธ
8+
// startsWith๋Š” ๊ทธ๋ƒฅ Map ์— ํ•ด๋‹น ๋ฌธ์ž์—ด์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.
9+
10+
// ๊ณต๊ฐ„ ๋ณต์žก๋„: Map ํฌ๊ธฐ -> O(N)
11+
// ์‹œ๊ฐ„ ๋ณต์žก๋„: ์ „์ฒด ํ˜ธ์ถœ ์ˆ˜ * String ๊ธธ์ด -> O(N*M)
12+
// ์ฐธ๊ณ ) ์ตœ๋Œ€ ์‹œ๊ฐ„ ๋ณต์žก๋„ : 2000 * 3*10^4 = 6*10^7
13+
class Trie {
14+
15+
Map<String,Boolean> stringSet;
16+
public Trie() {
17+
stringSet = new HashMap<>();
18+
}
19+
20+
public void insert(String word) {
21+
for(int i=0;i<word.length();i++){
22+
stringSet.putIfAbsent(word.substring(0, i), false);
23+
}
24+
stringSet.put(word, true);
25+
}
26+
27+
public boolean search(String word) {
28+
return stringSet.containsKey(word) && stringSet.get(word)==true;
29+
}
30+
31+
public boolean startsWith(String prefix) {
32+
33+
return stringSet.containsKey(prefix);
34+
}
35+
}

0 commit comments

Comments
ย (0)