以左和右查找子串是否出现位置相同,不同说明存在重复子串
#include<iostream>
#include<string>
using namespace std;
pair<int, string> longestsubstr(const string & str);
int main()
{
string s = "aaaaa";
pair<int, string> p;
p = longestsubstr(s);
cout << p.first << " " << p.second << endl;
return 0;
}
pair<int, string> longestsubstr(const string & str)
{
int len = str.size();
int i;
string substr;
for (i = len - 1; i > 0; i--)
{
for (int j = 0; j + i < len; j++)
{
string temp = str.substr(j, i);
int t = str.find(temp);
int k = str.rfind(temp);
if (t != k)
return make_pair(t, temp);
}
}
return make_pair(0, "");
}