가장 긴 공통 문자열 (두 문자열의 가장 긴 공통 문자열 문제)

https://www.nowcoder.com/practice/210741385d37490c97446aa50874e62dtpId=101&tqId=33101&tPage=1&rp=1&ru=/ta/programmer-code-interview-guide&qru=/ta/programmer-code-interview-guide/question-ranking

제목 설명


두 문자열str1과str2를 지정하여 두 문자열의 가장 긴 공통 문자열을 출력합니다. 가장 긴 공통 문자열이 비어 있으면 출력-1입니다.

설명 입력:

      ,        srr1,        str2。(1≤length(str1),length(str2)≤5000)

출력 설명:

      ,        。

예제 1

입력

1AB2345CD
12345EF

출력

2345

참고:

     O(n^2),       O(1)。(n              )
//dp[i][j]    ,    s[i] s[j]                ,          
//  1: O(mn)  O(mn)
#include
using namespace std;
int main(){
    string s1;
    string s2;
    cin>>s1>>s2;
    int m=s1.size();
    int n=s2.size();
    vector> dp(m,vector(n,0));
    for(int i=0;imax){
                end=i;
                max=dp[i][j];
            }
        }
    }
    if(max>0){
        cout<
//  2:     dp[i][j]   ,   dp[i-1][j-1],           ,         ,  len
#include
using namespace std;
int main(){
    string s1;
    string s2;
    cin>>s1>>s2;
    int m=s1.size();
    int n=s2.size();
    int row=0;       //        
    int col=n-1;     //        
    int max=0;       //      
    int end=0;       //       ,         
    while(rowmax){
                end=i;
                max=len;
            }
            i++;
            j++;
        }
        if(col>0){    //             
            col--;
        }else{        //        ,     
            row++;
        }
    }
    
    if(max>0){
        cout<

좋은 웹페이지 즐겨찾기