实现一个算法查找两个字符串最长的公共子字符串。子字符串的介绍如下:
子字符串是指字符串中任意个连续的字符组成的子序列
输出一行,为最长公共子序列。
分析:使用substr()与find()函数
if(str2.find(temp)!=string::npos)
:- 这个条件语句检查
str2.find(temp)
的返回值是否不等于string::npos
。- 如果
temp
在str2
中被找到,str2.find(temp)
将返回一个非string::npos
的值(即temp
在str2
中的位置),此时条件为真,执行接下来的代码块。- 如果
temp
不在str2
中,str2.find(temp)
将返回string::npos
,此时条件为假,不执行接下来的代码块。
string::npos
是std::string
类的一个静态常量,表示一个特殊的索引值,通常用于表示字符串中未找到的位置。在大多数实现中,string::npos
的值是size_t
类型的最大值。
#include <iostream>
#include<string>
using namespace std;
int main()
{// 请在此输入您的代码string str1,str2,res;int max=0;cin>>str1>>str2;int minlen=min(str1.size(),str2.size());for(int i=1;i<=minlen;i++){for(int j=0;j<str1.size();j++){string temp=str1.substr(j,i);if(str2.find(temp)!=string::npos){//判断str2中是否存在tempif(max<temp.size()){max=temp.size();res=temp;}}}}cout<<res;return 0;
}