请C++高手帮忙做一道题!

编写一个使用指针返回类型的函数,使用该函数在字符串中搜索一个子串,并返回第1个相匹配的子串第一个字符的索引值,如果不存在就返回-1。该函数的原型如下:intGetSubs... 编写一个使用指针返回类型的函数,使用该函数在字符串
中搜索一个子串,并返回第1个相匹配的子串第一个字符
的索引值,如果不存在就返回-1。该函数的原型如下:
int GetSubstr(char* str, char* substr);
展开
 我来答
百度网友89d61002f
2008-06-09 · TA获得超过123个赞
知道答主
回答量:108
采纳率:0%
帮助的人:95万
展开全部
#include <iostream>
#include <string>
using namespace std;

int GetSubstr(char* str, char* substr)
{
int str_len = strlen (str), substr_len = strlen (substr);
for (int i = 0; i < str_len-substr_len+1; i++)
for (int j = 0; j < substr_len; j++)
{
if (str[i+j] != substr[j])
break;
if (j == substr_len-1)
return i + 1;
}
return -1;
}
int main ()
{
char a[100];
char b[100];
cin >> a >> b;
cout << GetSubstr (a, b) << endl;
return 0;
}

在eclipse上的运行结果:
asfagagadbadcsas
sas
14

备注:这里是用朴素的字符串匹配算法在数据量不是很大的情况下比较简单实用,当数据量超过十万就建议选择效率较高的算法,如:R-K算法,有限自动机算法,甚至是理论最优的KMP算法。。具体可参考一些算法书籍都有相关介绍的。。

参考资料:

调研工厂
2025-05-12 广告
“调研工厂”(https://diaoyan001.com/)系北京清研灵智科技有限公司研发的专业智能的线上线下一体化问卷调查和明察暗访平台,支持网络调查、面对面访问、明察暗访、云电话调查、深度访谈、座谈会等功能,同时提供行业定制解决方案。... 点击进入详情页
本回答由调研工厂提供
luosiyong
2008-06-09 · TA获得超过3256个赞
知道大有可为答主
回答量:1090
采纳率:0%
帮助的人:1737万
展开全部
#include <iostream>
#include <string>
using namespace std;

int GetSubstr(char * str,char * substr)
{
int i,j;
bool flag;
for(i=0;i<strlen(str)-strlen(substr)+1;i++)
{
flag=true;
for(j=0;j<strlen(substr);j++)
{
if(str[i+j]!=substr[j])
{
flag=false;
break;
}
}
if(flag)
return i;
}
return -1;
}

int main()
{
char a[]="abcdef";
char b[]="def";
cout<<GetSubstr(a,b)<<endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
艾米的小学堂
2019-11-23 · TA获得超过3621个赞
知道大有可为答主
回答量:3095
采纳率:34%
帮助的人:152万
展开全部
#include
<iostream>
#include
<string>
using
namespace
std;
int
GetSubstr(char*
str,
char*
substr)
{
int
str_len
=
strlen
(str),
substr_len
=
strlen
(substr);
for
(int
i
=
0;
i
<
str_len-substr_len+1;
i++)
for
(int
j
=
0;
j
<
substr_len;
j++)
{
if
(str[i+j]
!=
substr[j])
break;
if
(j
==
substr_len-1)
return
i
+
1;
}
return
-1;
}
int
main
()
{
char
a[100];
char
b[100];
cin
>>
a
>>
b;
cout
<<
GetSubstr
(a,
b)
<<
endl;
return
0;
}
在eclipse上的运行结果:
asfagagadbadcsas
sas
14
备注:这里是用朴素的字符串匹配算法在数据量不是很大的情况下比较简单实用,当数据量超过十万就建议选择效率较高的算法,如:R-K算法,有限自动机算法,甚至是理论最优的KMP算法。。具体可参考一些算法书籍都有相关介绍的。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式