求一个字符串中的最长子串:
例如"abababcdef" 则最长子串是"ab", 长度为2
1 #include <iostream>
2 #include <vector>
3 #include <string>
4 using namespace std;
5
6
7 pair<int ,string> fun(const string &str)
8 {
9 vector<string> substrs;
10 int maxcount=1,count=1;
11 string substr;
12 int i,len=str.length();
13
14 for(i=0;i<len;i++)
15 substrs.push_back(str.substr(i,len-i));
16
17 for(i=0;i<len;i++)
18 {
19 for(int j=i+1;j<len;j++)
20 {
21 count=1;
22 if(substrs[i].substr(0, j-i)==substrs[j].substr(0, j-i))
23 {
24 ++count;
25 for(int k=j+(j-i);k<len;k+=j-i)
26 {
27 if(substrs[i].substr(0, j-i)==substrs[k].substr(0, j-i)) ++count;
28 else break;
29 }
30
31 if(count>maxcount)
32 {
33 maxcount=count;
34 substr=substrs[i].substr(0, j-i);
35 }
36 }
37 }
38 }
39 return make_pair(maxcount ,substr);
40 }
41
42 int main()
43 {
44 pair<int,string> result;
45 string str="abababcd";
46 result=fun(str);
47 cout<<result.first<<" "<<result.second<<endl; //输出为:2 ab
48 return 0;
49 }
50