您的位置:首页 > 其它

求一个字符串的最长重复子序列

2015-10-14 11:03 260 查看
分析:求最长重复子序列,即说明要找到一个至少出现两次的最长的子序列。假设某个子序列第二次出现和第一次出现的位置相差i,则i的值为1,2,、、、,str.size()-1,代码如下所示:

string longestRepeatSubstring(const string&str)
{
int n = str.size();
if (n==0)
return NULL;
int maxLength = 0;
int startIndex = 0;

for (int i = 1; i < n; ++i)
{
int current = 0;
for (int j = 0; j < n-i; ++j)
{
if (str[j] == str[i+j])current++;
else
current = 0;
if (current > maxLength)
{
maxLength = current;
startIndex = j-current+1;
}
}
}
if (maxLength > 0)
{
cout << maxI << endl;
return str.substr(startIndex,maxLength);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: