我已经做了一个解决方案,但我需要一个优化的解决方案。任务是:
- 读取两个字符串
- 获取第一个字符串的每个子字符串并在第二个字符串中找到它们
- 如果存在,打印“yes”,否则打印“no”
我已经做出的解决方案:
int check(string A, string B)
{
string s3;
int flag=0 ,len1,len2,k=0;
s3[0]='\0';
cin>>A>>B;
len1=A.length();
len2=B.length();
for(int i=0;i<len1;i++)
{
k=len1-i;
for(int j=1;j<k;j++ )
{
s3=A.substr(i,j);
size_t found=B.find(s3);
if(found!=string::npos)
{
flag=1;
return flag;
}
}
}
}
最佳答案
将第一个字符串的所有字符放入一个哈希集(unordered_set)中,然后遍历第二个字符串的字符并检查它们是否存在于哈希集中。如果是,则存在公共(public)子串(长度至少为 1),否则不存在公共(public)子串。
关于c++ - 检查2个字符串中是否有公共(public)子字符串c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34391991/