Método BF del algoritmo de coincidencia de cadenas
Busque la posición de otra cadena en una cadena
ababcabcdabcde motor de búsqueda
abcd
- "título de tabla invertido -" introducción de contenido - "URL
Lo siguiente es la implementación del método BF del algoritmo de coincidencia de cadenas.
#include<stdio.h>
#include<string.h>
int BF(const char*s,const char*p)
{
int lens=strlen(s);
int lenp=strlen(p);
if(s==NULL||p==NULL||lenp>lens) return -1;
int i=0;
int j=0;
while(i<lens&&j<lenp)
{
if(s[i]==p[j])
{
i++;
j++;
}
else
{
i=i-j+1;
j=0;
}
}
if(j==lenp)
{
return i-j;
}
return -1;
}
int main()
{
const char *s="ababcabcdabcde";
const char *p="abcd";
printf("%d\n",BF(s,p));
return 0;
}
Los resultados de la operación son los siguientes: Cómo
aumentar la posición pos
#include<stdio.h>
#include<string.h>
int BF(const char*s,const char*p,int pos)
{
int lens=strlen(s);
int lenp=strlen(p);
if(s==NULL||p==NULL||lenp>lens) return -1;
int i=pos;
int j=0;
while(i<lens&&j<lenp)
{
if(s[i]==p[j])
{
i++;
j++;
}
else
{
i=i-j+1;
j=0;
}
}
if(j==lenp)
{
return i-j;
}
return -1;
}
int main()
{
const char *s="ababcabcdabcde";
const char *p="abcd";
printf("%d\n",BF(s,p,6));
return 0;
}
Los resultados de la operación son los siguientes:
Complejidad de tiempo: peor caso O (m * n)
pero en general, O (m + n) la
cadena s tiene una longitud de my la cadena p tiene una longitud de n