가장 긴 공통 하위 문자열의 길이

5792 단어
두 개의 문자열이 주어집니다. 작업은 가장 긴 공통 하위 문자열의 길이를 찾는 것입니다.

예 1:

Input: S1 = "ABCDGH", S2 = "ACDGHR", n = 6, m = 6
Output: 4
Explanation: The longest common substring
is "CDGH" which has length 4.



일반적으로 가장 긴 공통 하위 시퀀스는 약간의 수정이 필요합니다.
일치하는 연속 시퀀스를 찾으려고 하기 때문입니다.
따라서 인덱스dp[i][j] = 1+ dp[i-1][j-1];i의 문자가 두 문자열에서 일치하는 경우 j입니다.



//User function Template for Java
class Solution{
    int longestCommonSubstr(String S1, String S2, int n, int m){
         //we will use same approach that we used in longest common subsequence
         //with slight modification
         int dp[][]   = new int[n+1][m+1];// 1 based indexing
         //base cased
         //since its 0 based indexing first row and first column will have 0 values
         //top down approach
         for(int i =0;i<=n;i++){
             dp[i][0] = 0;
         }
         for(int j=0;j<=m;j++){
              dp[0][j] = 0;
         }
         int ans = 0;
         for(int i=1;i<=n;i++){
             for(int j =1;j<=m;j++){
                 if(S1.charAt(i-1)==S2.charAt(j-1)){
                     dp[i][j] = 1 + dp[i-1][j-1];
                     ans = Integer.max(dp[i][j],ans);
                 }
                 else dp[i][j] =0;

             }
         }
         return ans;
    }

}

좋은 웹페이지 즐겨찾기