diff options
Diffstat (limited to 'string/trie.cpp')
| -rw-r--r-- | string/trie.cpp | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/string/trie.cpp b/string/trie.cpp index 24a21b2..5ee7a87 100644 --- a/string/trie.cpp +++ b/string/trie.cpp @@ -5,21 +5,18 @@ struct node { node() { for(int i = 0; i < 26; i++) e[i] = NULL; } }; -void insert(node *root, string *txt, int s) { - if(s == txt->length()) root->c++; +void insert(node *root, string &txt, int s) { // Laufzeit: O(|txt|) + if(s == (int)txt.size()) root->c++; else { - int idx = (int)(*txt[s] - 'a'); - if(root->e[idx] == NULL) { - root->e[idx] = new node(); - } + int idx = (int)(txt[s] - 'a'); + if(root->e[idx] == NULL) root->e[idx] = new node(); insert(root->e[idx], txt, s+1); } } -int contains(node *root, string *txt, int s) { - if(s == txt->length()) return root->c; - int idx = (int)(*txt[s] - 'a'); - if(root->e[idx] != NULL) { - return contains(root->e[idx], txt, s+1); - } else return 0; +int contains(node *root, string &txt, int s) { // Laufzeit: O(|txt|) + if(s == txt.size()) return root->c; + int idx = (int)(txt[s] - 'a'); + if(root->e[idx] != NULL) return contains(root->e[idx], txt, s + 1); + else return 0; } |
