JavaLeetCode1143。最長共通部分列。

2つの文字列text1とtext2が与えられた場合、これら2つの文字列の最長共通部分列の長さを返します。
文字列のサブシーケンスは、新しい文字列を参照します。これは、文字の相対的な順序を変更せずに、元の文字列から一部の文字を削除する(または文字を削除しない)ことによって形成される新しい文字列です。
たとえば、「ace」は「abcde」のサブシーケンスですが、「aec」は「abcde」のサブシーケンスではありません。2つの文字列の「共通のサブシーケンス」は、2つの文字列によって共有されるサブシーケンスです。
2つの文字列に共通のサブシーケンスがない場合は、0が返されます。
例1:
入力:text1 = "abcde"、text2 = "ace"
出力:3
説明:最長共通部分列は "ace"であり、その長さは3です。

動的計画法

class Solution {
    
    
    public int longestCommonSubsequence(String text1, String text2) {
    
    

        int m = text1.length();
        int n = text2.length();

        int dp[][] = new int[m+1][n+1];

        for(int i=1;i<m+1;i++){
    
    
            for(int j=1;j<n+1;j++){
    
    
                if(text1.charAt(i-1)==text2.charAt(j-1)){
    
    
                    dp[i][j] = dp[i-1][j-1]+1;
                }
                else{
    
    
                    dp[i][j] = Math.max(dp[i-1][j],dp[i][j-1]);
                }
            }
        }
        return dp[m][n];
    }
}

おすすめ

転載: blog.csdn.net/sakura_wmh/article/details/111461811