package com.company;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
class WordNode
{
String key;
int count;
Map<Character, WordNode> character = null;
WordNode() {
character = new HashMap<>();
}
}
class Main
{
public static void insert(WordNode head, String str)
{
WordNode current = head;
for (char c: str.toCharArray())
{
current.character.putIfAbsent(c, new WordNode());
current = current.character.get(c);
}
current.key = str;
current.count += 1;
}
public static int preorder(WordNode curr, int maximum_Count, StringBuilder key)
{
if (curr == null) {
return maximum_Count;
}
for (var entry: curr.character.entrySet())
{
if (maximum_Count < entry.getValue().count)
{
key.replace(0, key.length(), entry.getValue().key);
maximum_Count = entry.getValue().count;
}
maximum_Count = preorder(entry.getValue(), maximum_Count, key);
}
return maximum_Count;
}
public static void main(String[] args)
{
List<String> dict = Arrays.asList(
"kelly", "programmer", "coding", "we", "pro", "pro", "code",
"nyamai", "codec", "codecs", "kelly", "codex", "codify",
"kelly", "codes", "code", "kelly", "pro", "codec",
"codeveloper", "codrive", "codec", "tree", "kelly"
);
WordNode head = new WordNode();
for (String word: dict) {
insert(head, word);
}
int count = 0;
StringBuilder key = new StringBuilder();
count = preorder(head, count, key);
System.out.println("Word : " + key);
System.out.println("Count: " + count);
}
}
Comments