以左和右查找子串是否出现位置相同,不同说明存在重复子串
#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, ""); }