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

2024-12-30 01:10:39
推荐回答(3个)
回答1:

#include
#include
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算法。。具体可参考一些算法书籍都有相关介绍的。。

回答2:

#include
#include
using namespace std;

int GetSubstr(char * str,char * substr)
{
int i,j;
bool flag;
for(i=0;i {
flag=true;
for(j=0;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< return 0;
}

回答3:

#include

#include

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算法。。具体可参考一些算法书籍都有相关介绍的。。