can kurt Ответов: 0

Это мой алгоритм сопоставления строк horspool но иногда он работает иногда нет


int horspoolstringmatching(const string &P, const string &T) {

    int table[127];

    int k, flag = 0;

    int m = T.length();
    int n = P.length();
    int i, j;


    for (i = 0; i < 127; i++)
        table[i] = m;
    for (j = 0; j < m - 1; j++)
        table[P[j]] = m - 1 - j;

     i = m - 1;





    while (i <= n - 1) {

        k = 0;
        while (k <= m - 1 && T[m - 1 - k] == P[i - k]) 
            k++;


        if (k == m) {
            return i - m + 1;
            flag = 1;
            break;
        }


        else {
            i = i + table[P[i]];
        }

    }
    if (!flag)
        return -1;


}


Что я уже пробовал:

например, если я пытаюсь найти "abc" в тексте "aAaaabc", это работает, но если я изменяю "A" на "a", это не работает, или если я удаляю "A", это не работает, что не так с этим кодом.

Richard MacCutchan

Во многом потому, что это невозможно понять. Почему бы не использовать строковые функции, которые предоставляются?

KarstenK

Google после функции strtok C :-O

0 Ответов