首页 > 其他分享 >动态规划-公共子序列

动态规划-公共子序列

时间:2022-11-01 13:57:02浏览次数:52  
标签:int text2 字符串 text1 公共 序列 动态 dp

公共子序列是二维动态规划的典型问题,一般用了求两个字符串的相似程度。

我们看一个案例:

案例1:给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。

一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串中的字符构成,这些字符可以不连续,但顺序和原来字符串是一样的。

我们这样思考,假设dp[i][j]是代表text1[0:i],text2[0:j]的公共子序列长度,那么dp[i][j]跟dp[i-1][j-1]是什么关系?

加入text1[i]==text2[j],那么公共子序列就多了一位,此时有

dp[i][j]=dp[i-1][j-1]+1

那么如果text1[i]!=text2[j],dp[i][j]如何计算?

dp[i][j]=max{dp[i-1][j],dp[i][j-1]}

 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; i++) {
            for (int j = 1; j <= n; 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];
    }

 

标签:int,text2,字符串,text1,公共,序列,动态,dp
From: https://www.cnblogs.com/wangbin2188/p/16847409.html

相关文章

  • 动态规划-子序列
    子序列是序列的一部分,元素可以不连续。子串是字符串的一部分,必须连续。求子序列的和、连续递增子序列都是经典的一维动态规划问题。这一类题目都有差不多的思路,我们看案......
  • 最长不下降子序列(线段树优化dp)
    最长不下降子序列题目大意:给定一个长度为N的整数序列:A\(_{1}\),A\(_{2}\),⋅⋅⋅,A\(_{N}\)。现在你有一次机会,将其中连续的K个数修改成任意一个相同值。请你计......
  • 学习笔记-JAVA反序列化
    JAVA反序列化免责声明本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.简介序列化是让Java对象脱离Java运......
  • 【QT】创建动态链接库及使用
    创建动态链接库创建一个项目选择library的C++库,下一步。选择共享库,输入动态库的名字,选择创建路径,下一步选择编译环境,下一步选择QTCore模块,该模块提供核心的非图......
  • node2_动态路径拼接错误问题
      如果使用相对路径,不在当前目录下通过其他目录来找到这个JS运行就会报错,当我们使用fs模块来操作文件时,我们如果使用相对路径的话,很容易出现路劲动态拼接错误的情况,......
  • 公共交通 | 智慧公交可视化大屏管理云平台
    建设背景随着中国城镇化的快速发展,城市人口数量急剧增加,城市公共交通面临着前所未有的压力。道路拥堵问题成为我国大城市通病,影响城市运行效率,也为城市居民生活带来不便......
  • Java实现 Serializable 序列化
    深度理解Java实现Serializable序列化概念把对象转换为直接序列的过程叫对象的序列化把字节序列恢复为对象的过程叫对象的反序列化用途对象持久化跨网络数据交换,远程过程调......
  • LeetCode 236. 二叉树的最近公共祖先 - 回溯的理解
    题目https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/思路自己做只摸到一些门道,还是靠随想录...代码:deflowestCommonAncestor(self,root:'......
  • Unity反序列天气API的JSON
    心知天气:https://www.seniverse.com/JSON:{"results":[{"location":{"id":"C23NB62W20TF","name":"西雅图","country":......
  • PHP反序列化做题方法
    1.简化:把PHP代码复制到编辑器里面,寻找PHP反序列化的魔术方法,然后把不需要的部分删去2.找链子:通过以知的魔术方法,寻找到可以利用的点,然后想办法通过对象与方法的调用执行......