Vous devez vous connecter pour exécuter votre code.

Recherche Horspool

É 9.8.2 — Implémentez la fonction horspool_search qui recherche la première occurrence d'un mot dans un texte avec l'algorithme de Horspool.

#include <string.h> #include <limits.h> char *horspool_search(const char *t, size_t tlen, const char *s, size_t slen) { if (slen == 0) return (char *)t; if (slen > tlen) return NULL; int d[UCHAR_MAX + 1]; for (int i = 0; i <= UCHAR_MAX; i++) d[i] = (int)slen; for (size_t i = 0; i < slen - 1; i++) d[(unsigned char)s[i]] = (int)(slen - 1 - i); size_t k = 0; while (k + slen <= tlen) { size_t j = slen - 1; while (j < slen && t[k + j] == s[j]) j--; if (j == (size_t)-1) return (char *)(t + k); k += (size_t)d[(unsigned char)t[k + slen - 1]]; } return NULL; }