最长公共子序列(JAVA实现)
题目标题:
计算两个字符串的最长公共子序列的长度,字符不区分大小写。
输入描述:输入两个字符串,分两行输入。
输出描述:输出一个整数。
示例:
输入:
测试数据1(注,字符串前有空格):
12asdfawe2rasdaswer
输出:6
测试数据2:
ABCADAB
BACDBA
输出:4
结果:
LCS是Longest Common Subsequence的缩写,即最长公共子序列。一个序列,如果是两个或多个已知序列的子序列,且是所有子序列中最长的,则为最长公共子序列。
比如,对于char x[]="aabcd";有顺序且相互相邻的aabc是其子序列,有顺序但是不相邻的abc也是其公共子序列。即,只要得出序列中各个元素属于所给出的数列,就是子序列。再加上char y[]="12abcabcd";对比出才可以得出最长公共子序列abcd。
最长公共子序列动态规划解法:
dp[i][j] -- 表示子串A[0...i](数组长度为n)和子串B[0...j](数组长度为m)的最长公共子序列
当A[i] == B[j]时,dp[i][j] = dp[i-1][j-1] + 1;
否则,dp[i][j] = max(dp[i-1][j], dp[i][j-1]);最优解为dp[n-1][m-1];
JAVA代码实现:
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNextLine()) {String str1 = scanner.nextLine().toLowerCase();String str2 = scanner.nextLine().toLowerCase();System.out.println(findLCS(str1, str1.length(), str2, str2.length()));}}public static int findLCS(String A, int n, String B, int m) {int[][] dp = new int[n + 1][m + 1];for (int i = 0; i <= n; i++) {for (int j = 0; j <= m; j++) {dp[i][j] = 0;}}for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {if (A.charAt(i - 1) == B.charAt(j - 1)) {dp[i][j] = dp[i - 1][j - 1] + 1;} else {dp[i][j] = dp[i - 1][j] > dp[i][j - 1] ? dp[i - 1][j] : dp[i][j - 1];}}}return dp[n][m];}
}
最长公共子序列(JAVA实现)相关推荐
- 最长公共子序列Java代码实现
最长公共子序列定义:两个或多个已知数列的子序列集合中最长的就是最长公共子序列. 比如数列A = "abcdef"和B = "adefcb",那么两个数列的公共子 ...
- java lcs_LCS最长公共子序列java实现
packagekpp.base;/*** 获取两个字符串的最长公共子序列 *@authorkpp **/ public classLCSTest {private static String lcs ...
- 动态规划示例汇总-Java版(组合硬币、跳台阶、最小路径和、最长递增子序列、最长公共子序列、01背包问题、最小编辑代价)
动态规划算法示例汇总-Java版 组合硬币 Java解题-暴力搜索 Java解题-记忆搜索 Java解题-动态规划(两种写法) 跳台阶 Java解题-暴力递归 Java解题-动态规划 矩阵最小路径和 ...
- java实现最长连续子序列_最长公共子序列/最长公共子串 Python/Java实现
关注我的微信公众号:后端技术漫谈 不定期推送关于后端开发.爬虫.算法题.数据结构方面的原创技术文章,以及生活中的逸闻趣事. 我目前是一名后端开发工程师.主要关注后端开发,数据安全,网络爬虫,物联网,边 ...
- [Java] 蓝桥杯ADV-202 算法提高 最长公共子序列
问题描述 给定两个字符串,寻找这两个字串之间的最长公共子序列. 输入格式 输入两行,分别包含一个字符串,仅含有小写字母. 输出格式 最长公共子序列的长度. 样例输入 abcdgh aedfhb 样例输 ...
- Java动态规划求最长公共子序列(LCS)
最长公共子序列(LCS) 定义:在序列X和序列Y中同时出现的元素,按照脚标从小到大排列的这样的序列. String x = "ABCBDABGGGTT"; ...
- 用java设计一个文件查重程序,输入两个文本文件,输出两个文本文件的重复率(最长公共子序列的应用)...
你可以使用java代码来设计一个文件查重程序.首先,你需要读取两个文本文件的内容,将它们存储在字符串变量中.然后,你可以使用最长公共子序列(LCS)算法来计算两个字符串的重复率. LCS算法的实现方法 ...
- java lcs_Java算法之最长公共子序列问题(LCS)实例分析
本文实例讲述了Java算法之最长公共子序列问题(LCS).分享给大家供大家参考,具体如下: 问题描述:一个给定序列的子序列是在该序列中删去若干元素后得到的序列.确切地说,若给定序列X= { x1, x ...
- LCS/最长公共子序列/最长公共子串 实现 Python/Java
参考 http://blog.csdn.net/u012102306/article/details/53184446 http://blog.csdn.net/hrn1216/article/det ...
最新文章
- ICLR 2022:AI如何识别“没见过的东西”?
- python便捷数据怎么获取_Python数据获取与表示基础编程练习
- java 抽象类继承抽象类_Java之继承、抽象类、接口篇
- Esfog_UnityShader教程_前言
- SQL SERVER提供了大量的WINDOWS和SQLSERVER专用的排序规则
- Tensorflow 梯度下降实例
- 【HTML】中国天气天气插件调用
- fckeditor异常总结---org.apache.commons.fileupload.FileUploadException
- Pytorch Dataset、Dataloader的简单理解与使用
- 微信支付,判断是否安装了微信
- 7.4读写锁(ReadWriteLock)
- 靠java_人生靠反省,Java靠泛型
- mysql建表数据字典_一种数据字典表的创建方式
- CCPP Blog 目录
- 第一章 HTML基础
- 04_从啤酒与尿布,聊关联规则推荐
- python堆叠面积图_06. Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图...
- 划分子网和构造超网(一)
- 九、JavaSE-Set接口
- 用halcon提取衣服徽章
热门文章
- mysql数据库连接javaweb_javaweb中mysql数据库连接方法
- ebs和java哪个前景好_EBS与实例存储的好处(反之亦然)[关闭]
- Deeplearnng.AI第四部分第一周、卷积神经网络
- hadoop3伪分布式安装
- jmeter.bat配置(主要关于OOM)
- 0523 CSS知识点
- IOS开发学习记录第2天之熟悉Xcode常用快捷键
- Thinkphp小知识点
- buntu 8.04 安装 mysql 无提示输入用户名 密码 ,怎么修改
- openwrt 替换Dropbear by openssh-server