diff --git a/DSA Essentials Solutions/Trie/PrefixStrings.cpp b/DSA Essentials Solutions/Trie/PrefixStrings.cpp index ccff759..a790d38 100644 --- a/DSA Essentials Solutions/Trie/PrefixStrings.cpp +++ b/DSA Essentials Solutions/Trie/PrefixStrings.cpp @@ -1,80 +1,86 @@ #include using namespace std; -class node{ - public: +class node +{ +public: char ch; - unordered_map next; + unordered_map next; bool isTerminal; - node(char a){ - ch=a; - bool isTerminal=false; + node(char a) + { + ch = a; + bool isTerminal = false; } }; -class Trie{ - public: - node*root= new node('\0'); - - void insert(string str){ +class Trie +{ +public: + node *root = new node('\0'); - node*temp=root; - for(int i=0; inext.count(str[i])==0){ - temp->next[str[i]]=new node(str[i]); - } - temp=temp->next[str[i]]; + void insert(string str) + { + + node *temp = root; + for (int i = 0; i < str.length(); i++) + { + if (temp->next.count(str[i]) == 0) + { + temp->next[str[i]] = new node(str[i]); + } + temp = temp->next[str[i]]; } - temp->isTerminal=true; + temp->isTerminal = true; return; } - void dfs(node*temp, vector &v, string word ){ - if(temp->isTerminal){ + + void dfs(node *temp, vector &v, string word) + { + if (temp->isTerminal) + { v.push_back(word); } - if(temp->next.empty()){ + if (temp->next.empty()) + { return; } - for(auto p:temp->next){ - word.push_back(p.first); - dfs(temp->next[p.first],v,word); - word.pop_back(); + for (auto p : temp->next) + { + word.push_back(p.first); + dfs(temp->next[p.first], v, word); + word.pop_back(); } return; } - - - vector find(string str){ + vector find(string str) + { vector v; - node* temp=root; - string word=""; - for(int i=0; inext.count(str[i])==0){ - return v; - } - word.push_back(str[i]); - temp=temp->next[str[i]]; + node *temp = root; + string word = ""; + for (int i = 0; i < str.length(); i++) + { + if (temp->next.count(str[i]) == 0) + { + return v; + } + word.push_back(str[i]); + temp = temp->next[str[i]]; } - if(temp->isTerminal){ - v.push_back(word); - } - dfs(temp,v,word); - sort(v.begin(),v.end()); + + dfs(temp, v, word); + sort(v.begin(), v.end()); return v; } - - - - }; - - -vector findPrefixStrings(vector words, string prefix){ - Trie t; - for(auto s:words){ - t.insert(s); - } - vector res=t.find(prefix); - return res; +vector findPrefixStrings(vector words, string prefix) +{ + Trie t; + for (auto s : words) + { + t.insert(s); } + vector res = t.find(prefix); + return res; +}