Boyer - Moore字符串搜索到星期日字符串搜索(快速字符串搜索)c ++

时间:2017-04-05 18:27:33

标签: c++ string algorithm boyer-moore quick-search

我想将我的Boyer - Moore算法变成星期日(快速搜索)。目前我有一个Boyer - Moore字符串搜索算法的工作版本:

vector <int> table(256);
fill(table.begin(), table.end(), -1);

for (int i = 0; i < target_size; i++) {
    table[(int)target[i]] = i;
}

int s = 0;
while (s <= (text_size - target_size)) {
    int j = target_size - 1;
    while (j >= 0 && target[j] == text[s + j]) 
        j--;

    if (j < 0) {
        cout << s << endl;
        s += (s + target_size < text_size) ? text_size- table[text[s + target_size]] : 1;
    }
    else
        s += max(1, j - table[text[s + target_size]]);
}

我一直在查看解释星期日(快速搜索)算法的以下2个链接,但我不确定如何将B-M更改为星期日:

http://www.iti.fh-flensburg.de/lang/algorithmen/pattern/sundayen.htm

http://www-igm.univ-mlv.fr/~lecroq/string/node19.html

我会很感激任何提示。

0 个答案:

没有答案