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
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
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:
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