blob: 163a110e362a682575289e73c2292298c752ba99 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
struct node {
node *(e)[26]; // Implementierung für Kleinbuchstaben.
int c = 0; // Anzahl der Wörter, die an diesem node enden.
node() { for(int i = 0; i < 26; i++) e[i] = NULL; }
};
void insert(node *root, string &txt, int s = 0) { // 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();
insert(root->e[idx], txt, s+1);
}}
int contains(node *root, string &txt, int s = 0) { // Laufzeit: O(|txt|)
if(s == (int)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;
}
|