leet-code/src/main/java/leetcode/editor/cn/LongestCommonSubsequence.java

77 lines
2.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//给定两个字符串 text1 和 text2返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。
//
// 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。
//
//
// 例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。
//
//
// 两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。
//
//
//
// 示例 1
//
//
//输入text1 = "abcde", text2 = "ace"
//输出3
//解释:最长公共子序列是 "ace" ,它的长度为 3 。
//
//
// 示例 2
//
//
//输入text1 = "abc", text2 = "abc"
//输出3
//解释:最长公共子序列是 "abc" ,它的长度为 3 。
//
//
// 示例 3
//
//
//输入text1 = "abc", text2 = "def"
//输出0
//解释:两个字符串没有公共子序列,返回 0 。
//
//
//
//
// 提示:
//
//
// 1 <= text1.length, text2.length <= 1000
// text1 和 text2 仅由小写英文字符组成。
//
// Related Topics 字符串 动态规划
// 👍 640 👎 0
package leetcode.editor.cn;
//1143:最长公共子序列
class LongestCommonSubsequence {
public static void main(String[] args) {
//测试代码
Solution solution = new LongestCommonSubsequence().new Solution();
System.out.println(solution.longestCommonSubsequence("abcde", "ace"));
}
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int longestCommonSubsequence(String text1, String text2) {
int[][] dp = new int[text1.length() + 1][text2.length() + 1];
for (int i = 1; i <= text1.length(); i++) {
for (int j = 1; j <= text2.length(); 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[text1.length()][text2.length()];
}
}
//leetcode submit region end(Prohibit modification and deletion)
}