Implémentation d'un algorithme de correspondance de 115 chaînes basé sur la méthode BF

Méthode BF de l'algorithme de correspondance de chaînes

Trouvez la position d'une autre chaîne dans une chaîne
ababcabcdabcde moteur de recherche
abcd
- "titre de table inversé -" introduction du contenu - "URL

Insérez la description de l'image ici
Vient ensuite l'implémentation de la méthode BF de l'algorithme de correspondance de chaînes

#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;
}

Les résultats de l'opération sont les suivants: Comment
Insérez la description de l'image ici
augmenter la position 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;
}

Les résultats de l'opération sont les suivants:
Insérez la description de l'image ici
Complexité temporelle: pire des cas O (m * n)
mais en général, O (m + n)
chaîne s a une longueur de m et la chaîne p a une longueur de n

Je suppose que tu aimes

Origine blog.csdn.net/LINZEYU666/article/details/111622511
conseillé
Classement