Это мой алгоритм сопоставления строк 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