编程:输入一行字符串,找出其中出现的相同且长度最最长的字符串,输出它及其首字符出现的位置。例如,“yyabcdabjcabceg",输出结果为abc和3.
#include <iostream>
#include <string>
#include <vector>
using namespace std;
pair<int,string> fun(const string& str)
{
vector<string> substrs;
string substr;
int i,j,k;
int max=0,num=0;
int len=str.length();
for(i=0;i<len;i++)
substrs.push_back(str.substr(i,len-i));
for(i=0;i<len;i++)
for(j=i+1;j<len;j++)
{
for(k=j;k<len;k++)
if(substrs[i].substr(0,j-i)==substrs[k].substr(0,j-i))
{
if((j-i)>max)
{
max=j-i;
substr=substrs[i].substr(0,j-i);
num=i;
}
break;
}
}
return make_pair(num+1,substr);
}
int main()
{
string str;
pair<int,string > rs;
while(cin>>str)
{
rs=fun(str);
cout<<rs.second<<':'<<rs.first<<endl;
}
}