c++ - 检查2个字符串中是否有公共(public)子字符串c++

标签 c++ string algorithm find substring

我已经做了一个解决方案,但我需要一个优化的解决方案。任务是:

  1. 读取两个字符串
  2. 获取第一个字符串的每个子字符串并在第二个字符串中找到它们
  3. 如果存在,打印“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/

相关文章:

algorithm - 柏姆-雅可比尼定理

c++ - 我应该为日志系统使用哪种输出方法?

string - 在C语言中进行替换时输出的多余字符和符号

c - 为什么这个字符串是空的?

algorithm - 你从这个 splinter 的随机洗牌中得到什么分布?

javascript - 创建随机树?

C++ extern const char* 没有按预期工作

c++ - 修改PIN中的申请说明

c++ - 当我使用按引用返回时,我不知道这些代码之间的区别

c++ - 无法弄清楚 C++ 中的指针!需要有关基本字符串和指针的信息