Os métodos de Knuth-Morris-Pratt (KMP) e de Boyer-Moore (BM)...
Esses métodos são algoritmos de busca em cadeias. Seja T o texto e P o parâmetro procurado em T, o método BM consegue evitar comparações entre P e uma boa parte dos caracteres em T. O único problema desse algoritmo é que ele trabalha com um alfabeto limitado. O método KMP evita o desperdício de informações que ocorrem em outros algoritmos. Possui pré-processamento de P, permitindo que nenhum caractere seja reexaminado.
Fonte: http://ticnapratica.blogspot.com/2010/05/logica-e-estrutura-de-dados.html