1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
// 最大子字符串.cpp : 定义控制台应用程序的入口点。
//
//找出两个字符串中最大子字符串,如"abractyeyt","dgdsaeactyey"的最大子串为"actyet"
#include <iostream>
#include <string>
using
namespace
std;
string MaxSameStr(string str1,string str2)
{
string result;
int
max=0,first;
int
len=0;
//相同字符串的长度
int
k,q;
//穷举
for
(unsigned
int
i=0;i<str1.length();i++)
for
(unsigned
int
j=0;j<str2.length();j++)
{
unsigned
int
k=i;
unsigned
int
q=j;
if
(str1[k]==str2[q])
//发现相同的字母
{
first=k;
//标记起始位置
while
(str1[k]==str2[q]&&q<str2.length()&&k<str1.length())
//继续比较后面的是否也相同
{
k++;q++;
}
len=k-first;
if
(len>max)
//是否为目前最长字符串
{
max=len;
string temp(str1,first,len);
result=temp;
}
}
}
return
result;
}
int
main()
{
string Str1,Str2;
cout<<
"请输入两个字符串"
<<endl;
cin>>Str1>>Str2;
cout<<
"结果为"
<<MaxSameStr(Str1,Str2)<<endl;
return
0;
}
|
1
|
//特别是这句while(str1[k]==str2[q]&&q<str2.length()&&k<str1.length())要加上后面的q<str2.length()&&k<str1.length(),不然会导致字符串越界。。
|