求一段字符串中出现的相同且长度最长的字符串
int main()
{
string str,substr;
string str1;
int t3;
int t1 = 0;
int t2 = 0;
cout<<"请输入字符串"<<endl;
int maxnum = 0;
int count = 0;
cin>>str;
int len = str.length();
for(int i = len - 1;i > 0;i-- )
{
for(int j = 0;j < len;j++ )
{
if(i + j <= len)
{
substr = str.substr(j,i);
t1 = str.find(substr);
t2 = str.rfind(substr);
if(t1 != t2)
{
count = substr.length();
if( count > maxnum)
{
maxnum = count;
str1 = substr;
t3 = t1;
}
}
}
}
}
cout <<str1<<endl;
cout<<t3<<endl;
return 0;
} <strong>
</strong>
这里出现了几个函数,都是string类中的相关函数,下面依次介绍下。
substr函数为string类中定义的一个函数
#include<string>
#include<iostream>
using namespace std;
void main()
{
string s("avdgshdsdsdsdsds");
string a=s.substr(0,5); //获得字符串s中 从第0位开始的长度为5的字符串//默认时的长度为从开始位置到尾
cout<<a<<endl;
}
find 和rfind函数都是string类中定义的查找函数,find是正序查找函数,rfind是逆序查找函数。
#include<string>
#include<iostream>
using namespace std;
int main()
{
string s = "yughyestreyesr";//索引是基于0的
string substr = "yes";
int zhe = s.find(substr);//正序查找,返回第一个找到的字符串中第一个元素的索引
int fan = s.rfind(substr);//逆序查找,返回第一个找到的字符串中第一个元素的索引
cout<<"正序找到的字符串第一个元素的索引="<<zhe<<endl;
cout<<"逆序找到的字符串第一个元素的索引="<<fan<<endl;
return 0;
}