#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);//正序查找,从0开始查找字符串tep,返回tep的位置
num=str.rfind(tep);//逆序查找,从0开始从后向前查找字符串,返回tep的位置
//从前后分别查找字符串,正常情况下是刚开始的长串找不到的,到后来的短串前后才会重
if(t!=num)//如果两次查找位置不一致说明存在重复子串
{
cout<<tep<<" "<< t+1<<endl;//输出子串及位置
return 0;//因为是从长到短,所以再短的也就不找了
}
}
}
}
return 0;
}
转自:
http://hi.baidu.com/uponyy630/blog/item/77a91715ee90be16962b43f1.html
输入一行字符串,找出其中出现的相同且长度最长的字符串
最新推荐文章于 2024-04-26 21:01:08 发布