字符串匹配问题典型应用题目详解

张开发
2026/4/21 18:47:23 15 分钟阅读

分享文章

字符串匹配问题典型应用题目详解
典型题目最长公共子序列题目描述给定两个字符串求它们的最长公共子序列长度。思路最长公共子序列问题是典型的二维动态规划问题。1. 定义用 dp[i][j] 表示字符串 A 的前 i 个字符和字符串 B 的前 j 个字符的最长公共子序列长度。2. 边界条件当 i 0 或 j 0 时即其中一个字符串为空最长公共长度为 0:dp[i][0] 0,dp[0][j] 0状态转移分析如果当前字符相等即 A[i-1] B[j-1]则当前状态为之前状态加 1dp[i][j] dp[i-1][j-1] 1如果当前字符不相等则当前状态为之前状态的最大值dp[i][j] max(dp[i-1][j], dp[i][j-1])int longestCommonSubsequence(string text1, string text2) { int m text1.size(), n text2.size(); vectorvectorint dp(m 1, vectorint(n 1, 0)); for (int i 1; i m; i) { for (int j 1; j n; j) { if (text1[i - 1] text2[j - 1]) { dp[i][j] dp[i - 1][j - 1] 1; } else { dp[i][j] max(dp[i - 1][j], dp[i][j - 1]); } } } return dp[m][n]; }时间复杂度O(m*n)空间复杂度O(m*n)好了本文到这里就结束了希望认真阅读全文的小伙伴都能有所收获哦

更多文章