Untitled
unknown
c_cpp
2 years ago
887 B
14
Indexable
bitset<DATA_MAX> WildCardSearch(string word, int index, int root) {
int len = word.size();
if(len == 3 && word[1] == '*') {
bitset<DATA_MAX> result;
result.set();
return result;
}
if (word[index] == '*') {
while (index+1 < len && word[index+1] == '*') {
index++; // avoid multiple '*'
}
if (index == len-2) {
return prefix[root];
}
bitset<DATA_MAX> result;
for (int i = 0; i < 26; ++i) {
if (trie[root][i] != 0) {
result |= ((WildCardSearch(word, index, trie[root][i]) | WildCardSearch(word, index + 1, root)));
}
}
return result;
}
else {
int charIndex = charToIndex(word[index]);
if (trie[root][charIndex] == 0) {
return NOT_FOUND;
}
if(index == len-2) {
return ed[trie[root][charIndex]];
}
return WildCardSearch(word, index + 1, trie[root][charIndex]);
}
}Editor is loading...
Leave a Comment