diff options
| author | Paul Jungeblut <s_jungeb@i08pc57.atis-stud.uni-karlsruhe.de> | 2014-11-22 13:03:04 +0100 |
|---|---|---|
| committer | Paul Jungeblut <s_jungeb@i08pc57.atis-stud.uni-karlsruhe.de> | 2014-11-22 13:03:04 +0100 |
| commit | f1b3e645381d9b8ea8197fb1473f115de2ee8f96 (patch) | |
| tree | 3bd28497e0dcbb025a9a740fbf441932ea927fd2 /string/trie.cpp | |
| parent | 9fe234e7181b1cad9652655e674e7f9f821814b7 (diff) | |
adding string chapter
Diffstat (limited to 'string/trie.cpp')
| -rw-r--r-- | string/trie.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/string/trie.cpp b/string/trie.cpp new file mode 100644 index 0000000..f4b979c --- /dev/null +++ b/string/trie.cpp @@ -0,0 +1,25 @@ +//nur fuer kleinbuchstaben! +struct node { + node *(e)[26]; + int c = 0;//anzahl der woerter die an dem node enden. + 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++; + else { + int idx = (int)((*txt).at(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).at(s) - 'a'); + if(root->e[idx] != NULL) { + return contains(root->e[idx], txt, s+1); + } else return 0; +} |
