Trie 클래스를 구현하세요
Trie()
- Trie 객체를 초기화
void insert(String word)
- 문자열 word를 Trie에 삽입
boolean search(String word)
- 문자열 word가 Trie에 있는 경우 true를 반환하고, 그렇지 않으면 false를 반환
boolean startsWith(String prefix)
- 이전에 삽입된 문자열 중에서 접두사 prefix를 가진 문자열이 있는 경우 true를 반환하고, 그렇지 않으면 false를 반환
Trie 클래스 내에 TrieNode 클래스를 내장하여 Trie 데이터 구조를 구현합니다. TrieNode 클래스는 노드의 자식 노드 배열과 문자열의 끝을 나타내는 플래그를 포함합니다. 이 클래스를 사용하여 문자열 삽입, 문자열 검색 및 접두사 검색 기능을 구현합니다.
class Trie {
private class TrieNode {
TrieNode[] children;
boolean isEndOfWord;
public TrieNode() {
children = new TrieNode[26]; // Assuming lowercase English alphabet characters
isEndOfWord = false;
}
}
private TrieNode root;
public Trie() {
root = new TrieNode();
}
public void insert(String word) {
TrieNode node = root;
for (char c : word.toCharArray()) {
int index = c - 'a';
if (node.children[index] == null) {
node.children[index] = new TrieNode();
}
node = node.children[index];
}
node.isEndOfWord = true;
}
public boolean search(String word) {
TrieNode node = root;
for (char c : word.toCharArray()) {
int index = c - 'a';
if (node.children[index] == null) {
return false;
}
node = node.children[index];
}
return node.isEndOfWord;
}
public boolean startsWith(String prefix) {
TrieNode node = root;
for (char c : prefix.toCharArray()) {
int index = c - 'a';
if (node.children[index] == null) {
return false;
}
node = node.children[index];
}
return true;
}
}
Runtime: 34 ms
Memory Usage: 54.7 MB