您的位置:首页 > 其它

字符串中出现相同并且长度最长的子串

2016-05-13 11:31 239 查看
题目描述:在字符串中找到出现相同的并且长度是最长的子串,输出该子串以及其首字符的位置。

例如mainStr="yyabcdabjcabceg",输出为"abc"和3。

分析:每次都找到最大长度的子串,然后正序和逆序查找该子串出现的位置。如果两者位置不相等,则说明两子串是相同的并且长度最长的子串,满足条件。否则继续遍历执行。

bool findSameMaxSubstr(const string& mainStr, string &subStr, int index)
{
bool isFind = false;
int len = mainStr.length();
for (int i = len; i > 1; i--)
{
for (int j = 0; j < len; j++)
{
int firstIndex = 0;
int secondIndex = 0;
if (i + j < len)
{
subStr = mainStr.substr(i, j);
firstIndex = mainStr.find(subStr);
secondIndex = mainStr.rfind(subStr);
if (firstIndex != secondIndex)
{
index = firstIndex + 1;
return true;
}
}

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: