题目

给定两个字符串 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 。

题解

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;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][j-1],dp[i-1][j]);}}}return dp[m][n];}
}

思路:

  1. 设字符串a的长度为m,字符串b的长度为n,设dp[m] [n],表示在a的第i处和b的第j处的最长公共子序列。

    若si=sj,则dp[i] [j]=dp[i-1] [j-1]+1;

    若si!=sj,则dp[i] [j]=max(dp[i-1] [j],dp[i])

1143-最长公共子序列(最长公共子序列)相关推荐

  1. 最长重复子数组最长公共子序列不相交的线

    引言 这同样是两种类型的题目,有很多相似的地方和不同的地方,区别依然是连续和不连续之分. 最长重复子数组 给两个整数数组 A 和 B ,返回两个数组中公共的.长度最长的子数组的长度. 示例: 输入: ...

  2. 数据结构 - 字符串 - 最长公共子序列 + 最长公共子字符串 - 动态规划

    最长公共子序列 /*** 最长公共子序列* 参考链接:http://blog.csdn.net/biangren/article/details/8038605* Created by 18710 o ...

  3. 最长公共子序列|最长公共子串|最长重复子串|最长不重复子串|最长回文子串|最长递增子序列|最大子数组和...

    最长公共子序列|最长公共子串|最长重复子串|最长不重复子串|最长回文子串|最长递增子序列|最大子数组和 文章作者:Yx.Ac   文章来源:勇幸|Thinking (http://www.ahathi ...

  4. 动态规划算法之:最长公共子序列 最长公共子串(LCS)

    1.先科普下最长公共子序列 & 最长公共子串的区别: 找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的.而最长公共子序列则并不要求连续. 2.最长公共子串 其实这是一个序贯决策问题 ...

  5. 算法设计 - LCS 最长公共子序列最长公共子串 LIS 最长递增子序列

    出处 http://segmentfault.com/blog/exploring/ 本章讲解: 1. LCS(最长公共子序列)O(n^2)的时间复杂度,O(n^2)的空间复杂度: 2. 与之类似但不 ...

  6. 最长公共子序列算法 java_转【算法之动态规划(三)】动态规划算法之:最长公共子序列 最长公共子串(LCS)字符串相似度算法...

    1.先科普下最长公共子序列 & 最长公共子串的区别: 找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的.而最长公共子序列则并不要求连续. 2.最长公共子串 其实这是一个序贯决策问题 ...

  7. 【To Understand】动态规划:求最长公共子串/最长公共子序列

    动态规划:求最长公共子串/最长公共子序列 本博客转载自:https://blog.csdn.net/u013074465/article/details/45392687 该博客中详细讲解了求最长公共 ...

  8. 动态规划之最长递增子序列 最长不重复子串 最长公共子序列

    [前言]动态规划:与分治法相似,即通过组合子问题来求解原问题,不同的是分治法是将问题划分为互不相交的子问题,递归求解子问题,再将他们组合起来求出原问题的解. 动态规划则应用于子问题重叠的情况,通常用来 ...

  9. 动态规划:最长公共子串 最长公共子序列

    一.最长公共子串 1. 题目 给定两个序列 X 和 Y,如果 Z 即是 X 的子串,又是 Y 的子串,我们就称它是 X 和 Y 的公共子串,注意子串是连续的. 例如 X = { A, B, C, D, ...

  10. 最短公共子序列_最短公共超序列

    最短公共子序列 Problem statement: 问题陈述: Given two strings, you have to find the shortest common super seque ...

最新文章

  1. openssl生成https证书
  2. 2020-09-09学习OpenCV4:OpenCV-4.1.0+VS2017 编译(包含扩展)
  3. 世界一流大学如何建设人工智能学科
  4. JDBC读取新插入Oracle数据库Sequence值的5种方法
  5. sql 计算空间列两地点之间距离
  6. postman断言之常用函数
  7. 网站服务器无返回数据,服务器无返回数据处理
  8. ASP.NET Core中的TagHelper及其用法
  9. 参照系(参考系)与参照物的区别
  10. java判断移动端和pc端_Java判断PC端还是移动端
  11. PD 关于tso 分配源代码分析
  12. 从小白到数据分析师的成长之路
  13. php 设置数字键盘,window_win10启动时如何设置默认打开小键盘数字输入切换键?,win10作为微软的一次重大变革 - phpStudy...
  14. python优秀代码写法笔记
  15. android tv盒子 主界面,设计规范 | 详解Android TV用户界面设计
  16. Nacos高级特性Raft算法以及原理和源码分析
  17. 文件管理:文件存储空间管理
  18. matlab做plsda分析,Plsda分析
  19. excel提示stdole32.tlb的解决方法
  20. 超级计算机泰坦 amd,基于AMD技术的泰坦超算宣告退役 推土机CPU最后的遗产

热门文章

  1. 无法下载eclipse || 下载eclipse被墙 的解决方案
  2. Window自带的定时自动执行程序
  3. win10+VS2017+WDK环境下编译C++程序提示error LNK1104无法打开文件*.lib(mfc140ud.lib)的问题
  4. 通用局部搜索算法之WALKSAT
  5. k-fold cross validation 相关的帖子、论文 建议收藏哦 ~
  6. STM32F103xx OLED旋转显示图片
  7. fusioncharts的属性介绍
  8. MySQL数据库基础知识12,MySQL单列索引和联合索引
  9. PHP和Socket简介
  10. C/S 和 B/S 模式的区别与联系