Implementación de un algoritmo de coincidencia de 115 cadenas basado en el método BF

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

Inserte la descripción de la imagen aquí
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
Inserte la descripción de la imagen aquí
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:
Inserte la descripción de la imagen aquí
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

Supongo que te gusta

Origin blog.csdn.net/LINZEYU666/article/details/111622511
Recomendado
Clasificación