输入一行字符串,找出其中出现的相同且长度最长的字符串,输出它及其首字符的位置
例如“yyabcdabjcabceg”,输出结果应该为abc和3,
原理:查找的最长子串长度从length()-1开始,i为子串的长度,j为子串的起始位置,通过正序和逆序查找比较看子串是否重复出现在字符串中不同位置来找到最长的重复子串
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str,tep;
cout<<"请输入字符串:"<<endl;
cin>>str;
for(int i=str.length()-1;i>1;i--)
{
for(int j=0;j<str.length();j++)
{
if(j+i<=str.length())
{
size_t t=0;
size_t num=0;
tep=str.substr(j,i);
t=str.find(tep);
num=str.rfind(tep);
if(t!=num)
{
cout<<tep<<" "<<t+1<<endl;
return 0;
}
}
}
}
return 0;
}