前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >字符串暴力匹配算法

字符串暴力匹配算法

作者头像
别团等shy哥发育
发布2023-02-27 10:20:29
7950
发布2023-02-27 10:20:29
举报
文章被收录于专栏:全栈开发那些事

字符串暴力匹配算法

这里不是KMP算法,KMP算法等我研究透彻再发出来,,这个只是暴力破解,主串需要回溯,而KMP算法的主串是不需要回溯的。 KMP算法点击这里,KMP详解+实现代码 代码如下:

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>
#include<malloc.h>
typedef struct
{
	char *str;         //str指向动态数组的首地址
	int maxLength;   //动态数组字符的最大个数
	int length;       //串的当前长度
}DString;
void Initiate(DString *S,int max,char *string)
{
	int i;
	S->str=(char *)malloc(sizeof(char)*max);   //申请动态数组空间
	S->maxLength=max;
	S->length=strlen(string);               //置串的当前长度值
	for(i=0;i<S->length;i++)
		S->str[i]=string[i];                   //赋值
}
void Destroy(DString *s)
{
	free(s->str);
	s->maxLength=0;
	s->length=0;
}
int BFIndex(DString S,int start,DString T)
{//查找主串S从start开始的子串T,成功则返回T在S中的首字符位置,失败则返回-1
	int i=start,j=0,v;
	while(i<S.length&&j<T.length)
	{
		if(S.str[i]==T.str[j])
		{
			i++;
			j++;
		}
		else
		{
			i=i-j+1;
			j=0;
		}
	}
	if(j==T.length)
		v=i-T.length;
	else
		v=-1;
	return v;
}
int main()
{
	DString mystring1,mystring2;
	int max1=29,max2=9;
	int pos=0;
	Initiate(&mystring1,max1,"Data Structure Data Structure");
	Initiate(&mystring2,max2,"Structure");
	//第一次查找
	pos=BFIndex(mystring1,pos,mystring2);
	printf("第一次查找时 pos=%d\n",pos);
	//第二次查找
	pos=BFIndex(mystring1,pos+1,mystring2);
	printf("第二次查找时 pos=%d\n",pos);
	Destroy(&mystring1);
	Destroy(&mystring2);




	return 0;
}

运行结果(这里返回的是第一次出现的下标)

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 字符串暴力匹配算法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档