
请C++高手帮忙做一道题!
编写一个使用指针返回类型的函数,使用该函数在字符串中搜索一个子串,并返回第1个相匹配的子串第一个字符的索引值,如果不存在就返回-1。该函数的原型如下:intGetSubs...
编写一个使用指针返回类型的函数,使用该函数在字符串
中搜索一个子串,并返回第1个相匹配的子串第一个字符
的索引值,如果不存在就返回-1。该函数的原型如下:
int GetSubstr(char* str, char* substr); 展开
中搜索一个子串,并返回第1个相匹配的子串第一个字符
的索引值,如果不存在就返回-1。该函数的原型如下:
int GetSubstr(char* str, char* substr); 展开
展开全部
#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算法。。具体可参考一些算法书籍都有相关介绍的。。
#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/)系北京清研灵智科技有限公司研发的专业智能的线上线下一体化问卷调查和明察暗访平台,支持网络调查、面对面访问、明察暗访、云电话调查、深度访谈、座谈会等功能,同时提供行业定制解决方案。...
点击进入详情页
本回答由调研工厂提供
展开全部
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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算法。。具体可参考一些算法书籍都有相关介绍的。。
<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算法。。具体可参考一些算法书籍都有相关介绍的。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询