Striver explanation of trie data structure
class Node{ Node [] node = new Node[26]; boolean flag; public Node(){ } public boolean containsKey(char c){ return node[c-'a']!=null; } public void put(char c, Node n){ node[c-'a'] = n; } public Node get(char c){ return node[c-'a']; } public void setFlag() { this.flag = true; } public boolean getFlag(){ return this.flag; } } class Trie { Node root; public Trie() { root = new Node(); } //will take tc : O(len) of the word public void insert(String word) { Node node = root; for(int i =0;i<word.length if node.put node node.setflag take tc : o of the word public boolean search for i="0;i<word.length();i++){" return false node.getflag prefix startswith true your trie object will be instantiated and called as such: obj="new" obj.insert param_2="obj.search(word);" param_3="obj.startsWith(prefix);"> <h2> Trie data structure II </h2> <p>striver's explanation for better understanding<br> </p> <pre class="brush:php;toolbar:false">import java.util.* ; import java.io.*; class Node { Node node[] = new Node[26]; int endWith = 0;// will keep track of no. of words ending with this word int countPrefix=0;// will keep track of no. of words starting with this word public Node(){ } public boolean containsKey(char c){ return node[c-'a']!=null; } public void put(char c, Node n){ node[c-'a'] = n; } public Node get(char c){ return node[c-'a']; } public void incrementCountPrefix() { ++this.countPrefix; } public void decrementCountPrefix(){ --this.countPrefix; } public void incrementEndWith(){ ++this.endWith; } public void deleteEndWith(){ --this.endWith; } public int getCountPrefix(){ return this.countPrefix; } public int getEndWith(){ return this.endWith; } } public class Trie { Node root; public Trie() { // Write your code here. root = new Node(); } public void insert(String word) { Node node = root; for(int i =0;i<word.length if node.put node node.incrementcountprefix node.incrementendwith public int countwordsequalto word write your code here. for i="0;i<word.length();i++){" else return node.getendwith will tell how many strings are with given countwordsstartingwith node.getcountprefix it starting void erase node.decrementcountprefix node.deleteendwith> <h2> Complete String </h2> <pre class="brush:php;toolbar:false">// tc : O(n*l) import java.util.* ; import java.io.*; class Node{ Node[] node = new Node[26]; boolean flag; public Node(){} public void put(char c , Node n){ node[c-'a'] = n; } public boolean containsKey(char c){ return node[c-'a']!=null; } public Node get(char c){ return node[c-'a']; } public void setEnd(){ this.flag = true; } public boolean isEnd(){ return this.flag; } } class Trie{ Node root; public Trie(){ root = new Node(); } public boolean checkIfPrefixPresent(String s){ Node node = root; boolean flag= true; for(int i = 0;i<s.length char c="s.charAt(i);" if return false node="node.get(c);" flag="flag" node.isend this will check the substring is also a string from list of strings line work here because any not present as in trie then s won be complete and we can only public void insert for i="0;i<s.length();i++){" node.put new node.setend setting end current class solution static root completestring n all data structure : trie.insert out comeplete among s.length selection a.compareto b lexographically else s.compareto completestring.equals> <h2> Count distinct substring </h2> <p>Tc: O(n^2) for inserting different unique substring in <br> Trie data structure<br> </p> <pre class="brush:php;toolbar:false"> import java.util.ArrayList; public class Solution { Node root; static int count; public Solution(){ root = new Node(); } public static int countDistinctSubstrings(String s) { count = 0; // Write your code here. Solution sol = new Solution(); for(int i =0;i
The above is the detailed content of Trie. For more information, please follow other related articles on the PHP Chinese website!