C++ 我的LCS实现的运行时计算

C++ 我的LCS实现的运行时计算,c++,algorithm,runtime,big-o,lcs,C++,Algorithm,Runtime,Big O,Lcs,请帮助我找到我实现的最大公共子字符串问题的运行时 int main(){ string a; string b; cin>>a>>b; string::iterator a1,b1; string max,temp; for(a1=a.begin();a1!=a.end();a1++){ b1=find(b.begin(),b.end(),*a1); if(b1!=b.end()){

请帮助我找到我实现的最大公共子字符串问题的运行时

int main(){
    string a;
    string b;
    cin>>a>>b;
    string::iterator a1,b1;
    string max,temp;

    for(a1=a.begin();a1!=a.end();a1++){

        b1=find(b.begin(),b.end(),*a1);
        if(b1!=b.end()){
            temp+=(*b1);
            while( ((b1+1) != (b.end())) and ((*(a1+1))==(*(b1+1)))){

                a1++;
                b1++;
                temp+=(*b1);
            }
            if(max.size()<temp.size()){
                max.assign(temp);

            }
            temp.clear();
        }

    }
    cout<<max;
}
intmain(){
字符串a;
b串;
cin>>a>>b;
字符串::迭代器a1,b1;
字符串最大值、温度;
对于(a1=a.begin();a1!=a.end();a1++){
b1=查找(b.开始(),b.结束(),*a1);
如果(b1!=b.end()){
温度+=(*b1);
而(((b1+1)!=(b.end())和(*(a1+1))=(*(b1+1))){
a1++;
b1++;
温度+=(*b1);
}

if(max.size()实现的最坏情况是两个字符串相同的情况。在这种情况下,时间复杂度为O(n*m),n->outer-loop,m->查找或扩展匹配
顺便说一句,您不必使用临时字符串,只需使用长度为

std::sort
的计数器需要时间O(n log n)(大多数排序算法的标准实现也是如此)。此外,请记住,您不能低估查找
步骤所需的时间,这将需要时间O(m)基于此,您认为运行时是什么?您必须使用动态编程在
O(n.m)
@Jarod42中解决它,这更糟的是什么?@templatetypedef我从来没有使用过sort。我的意思是find,所以n次调用来查找哪个需要O(m)时间,哪个是O(nm)对的?使用
a=“abbbbbbba”和b=“abababbbbbbba”
,您的结果是错误的。