您的位置:首页 > 其它

求一个字符串中的最长连续子串

2011-05-06 15:29 477 查看
求一个字符串中的最长子串:

例如"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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: