字符串的筛选,求大神教教

输入两点字符串,其中字符串一包含有字符串2的字符,如何编写一个c语言程序将相同部分的字符串筛选出来?求大神指教

 #include"iostream"
#include<string>
using namespace std;
int main()
{
    string a="fbdg";
    string b = "abcde";
    int k = 0;
    for(int i=0;i<a.length();i++)
    {
        k=0;
        for(int j=0;j<b.length();j++)
        {
            if(b[j]==a[i])
            {
                k=1;
                break;
            }
        }
        if(k==1)
            cout<<a[i];
    }
}

有用请采纳

LCS问题,用DP或者KMP算法都可以求解

c语言写这东西,复杂;用java

用c干啥,用java多简单