从键盘输入两个字符串,查找第二个字符串在第一个字符串中出现的次数
例如从键盘输入第一个字符串“abcdefg”,查找从键盘输入的第二个字符串“ab”在第一个字符串中出现的次数,例子中出现的次数是一次则输出1。能给我完整的程序代码吗??请...
例如 从键盘输入第一个字符串“abcdefg”,查找从键盘输入的第二个字符串“ab”在第一个字符串中出现的次数,例子中出现的次数是一次 则输出1。能给我完整的程序代码吗??请用自定义函数实现。
展开
1个回答
展开全部
字符串匹配问题 经典算法有kmp和Sunday........你可以百度一下
更多追问追答
追问
用c语言编程实现 我要现代码。你写出来我就采纳你的。
追答
int SUNDAY(char *text, char *patt)
{
register size_t temp[256];
size_t *shift = temp;
size_t i, patt_size = strlen(patt), text_size = strlen(text);
//cout << "size : " << patt_size << endl;
for( i=0; i < 256; i++ )
{
*(shift+i) = patt_size+1;
}
for( i=0; i < patt_size; i++ )
{
*(shift+ char(*(patt+i))) = patt_size-i;
}
size_t limit = text_size - patt_size+1;
for(i=0; i < limit; i += shift[ text[i+patt_size] ])
{
if( text[i] == *patt )
{
char *match_text = text + i + 1;
size_t match_size = 1;
do
{
if( match_size == patt_size )
{
//printf("%d ",i);
ans++;
}
}while((*match_text++) == patt[match_size++]);
}
}
return ans;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询