/* Implementacao do algoritmo de busca de padrões por força bruta. */
/* Origem: Sedgewick, Algorithms in C */

/* brutesearch(): recebe dois ponteiros para caracteres, char *p, char *a.
   Devolve o índice da primeira letra da primeira ocorrência do string
   apontado  por p no string apontado por a. */ 

int brutesearch(char *p, char *a)
{
  int i, j, M=strlen(p), N=strlen(a);

  for (i=0,j=0; j<M && i<N; i++,j++)
    /* Neste ponto, o prefixo de p de comprimento j coincide com os j
       caracteres imediatamente anteriores ao caracter a[i]. */ 
    while (a[i]!=p[j]) {
      i-=j-1;
      j=0;
    }
  if (j==M) return i-M;
  else return i;
}
