求一个字符串中的最长连续子串
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
例如"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
相关文章推荐
- 用三重循环求一个字符串的最大回文串(连续重复出现的最长子串)
- 找出一个字符串中最长的连续数字子串,输出该字符串及长度
- 给定一个字符串,求出最长的连续配对括号子串的长度
- 求一个字符串中最长的非重复连续子串
- 找出一个字符串中最长连续相同子串
- 求无符号数二进制中1的个数&&求一个字符串中最长的连续子串
- 找出一个字符串中最长连续相同子串
- 求一个字符串的最长无重复字母的连续子串
- 求一个字符串中最长连续子串
- 输入一个字符串A,求其中最长的连续递增子串的长度。例如 "hidefef" 中最长的连续递增子串是 "def" ,长度为 3
- 输出一个字符串中表示数字字符中的最长子串
- 求一个字符串中【连续】出现次数最多的子串
- 求一个字符串中连续出现次数最多的子串
- 求一个字符串中,最长回文子串
- poj 3294 Life Forms 求n(n>1)个字符串的最长的一个子串 后缀数组
- 重复子串问题(二):求一个字符串中连续出现次数最多的子字符串
- 求字符串中由连续的相同字符组成的最长子串(如果有两个及两个以上的最长子串,则输出第二个)
- 求一个字符串中连续出现次数最多的子串
- 两个字符串的最长连续公共子串
- 求一个字符串中连续出现次数最多的子串