Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static int getMaxAutocomplete(ArrayList<String> titles, ArrayList<String> bodies, String prefix) {
- Map<String,Integer> scores = new HashMap<String,Integer>();
- for (String title : titles) {
- String [] words = title.split(" ");
- for (int i = 0; i < words.length; i++) {
- scores.put(words[i], scores.getOrDefault(words[i], 0) + 10);
- }
- }
- for (String body : bodies) {
- String [] words = body.split(" ");
- for (int i = 0; i < words.length; i++) {
- scores.put(words[i], scores.getOrDefault(words[i], 0) + 1);
- }
- }
- int max = 0;
- for(String word : scores.keySet()) {
- if(word.length() >= prefix.length() && word.substring(0,prefix.length()).equals(prefix)) {
- max = Math.max(max, scores.get(word));
- }
- }
- return max;
- }
- public class TrieNode {
- int max;
- TrieNode [] children = new int[26];
- boolean endOfWord;
- public TrieNode(char c){
- this.c = c;
- }
- }
- public class Trie {
- private TrieNode root;
- public Trie() {
- root = new TrieNode();
- }
- // public void add(String word) {
- // TrieNode curr = root;
- // for (int i=0; i < word.length(); i++){
- // char c = word.charAt(i);
- // int index = c - 'A';
- // if (curr.children[index] == null) {
- // TrieNode newNode = new TrieNode();
- // curr.children[index] = newNode;
- // curr = newNode;
- // } else {
- // curr = curr.children[index];
- // }
- // }
- // curr.endOfWord=true;
- // }
- public int add(String word, int index, TrieNode curr) {
- if (index == word.length() - 1) {
- curr.max = scores
- endOfWord = true;
- return curr.max;
- }
- char c = word.charAt(i);
- int index = c - 'A';
- TrieNode newNode = new TrieNode();
- if (curr.children[index] == null) {
- curr.children[index] = newNode;
- } else {
- newNode = curr.children[index];
- }
- curr.max = add(word, index + 1, newNode);
- return curr.max;
- }
- // TrieNode curr = root;
- // for (int i=0; i < word.length(); i++){
- // char c = word.charAt(i);
- // int index = c - 'A';
- // if (curr.children[index] == null) {
- // TrieNode newNode = new TrieNode();
- // curr.children[index] = newNode;
- // curr = newNode;
- // } else {
- // curr = curr.children[index];
- // }
- // }
- // curr.endOfWord=true;
- // }
- updateMaxes()
- public TrieNode searchNode(String prefix){
- TrieNode curr = root;
- for(int i = 0; i < s.length(); i++){
- char c = s.charAt(i);
- int index = c-'A';
- if(curr.children[index] != null){
- curr = curr.children[index];
- } else {
- return null;
- }
- }
- if (curr == root)
- return null;
- return curr;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement