java最长升序子序列
来源:互联网 发布:湖北省知行学院 编辑:程序博客网 时间:2024/05/17 09:01
最长升序子序列是最长公共子序列的变形。
只要将字符串升序排序后与原字符串求最长公共子序列即可。
以下提供一个工具类可以传入任何形式的数组。(添加新类型的数组时构造方法要自己加)。
package com.leejuen.string;import java.lang.reflect.Array;import java.util.Arrays;public class LCS{private Integer len;private Object str1;private Object str2;LCS(String a,String b){str1 = a.toCharArray();str2 = b.toCharArray();}LCS(char[] a,char[] b){str1 = a;str2 = b;}LCS(int[] a,int[] b){str1 = a;str2 = b;}public int getLCS(){if(len==null) ini();return len;}private void ini(){int str1_len = Array.getLength(str1);int str2_len = Array.getLength(str2);int[][] dp = new int[str1_len+1][str2_len+1]; //初始化dp,java默认数据为0所以不用赋值for(int i=1;i<=str1_len;i++){for(int j=1;j<=str2_len;j++){Object tmp1 = Array.get(str1, i-1);Object tmp2 = Array.get(str2, j-1);if(tmp1.equals(tmp2)){dp[i][j] = dp[i-1][j-1]+1;}else{dp[i][j] = Math.max(dp[i][j-1], dp[i-1][j]);}}}len = dp[str1_len][str2_len];}//一下是测试:打印4、5/*public static void main(String[] args){//经典最长公共子序列String a = "BDCABA";String b = "ABCBDAB";System.out.println(new LCS(a,b).getLCS());//最长升序子序列int[] cc1 = {3,1,5,6,2,7,9};int[] cc2 = Arrays.copyOf(cc1, cc1.length);Arrays.sort(cc2);System.out.println(new LCS(cc1,cc2).getLCS());}*/}
0 0
- java最长升序子序列
- POJ 2004 最长升序子序列
- 【面试题】打印最长升序子序列
- 动态规划 最长升序子序列
- 动态规划:最长升序子序列
- 数组中最长的升序子序列
- 最长升序和降序子序列-作业题
- 求最长的升序子序列 并将最长的升序子序列输出
- JAVA最长子序列
- POJ2533 Longest Ordered Subsequence 最长升序子序列
- POJ 1887 一维DP 最长升序子序列 [暴弱]
- 动态规划——最长升序子序列
- 最长升序和降序子序列-导弹拦截2
- 最长公共子序列Java
- 最长公共子序列java
- java最长上升子序列
- 最长上升子序列.java
- 算法:最长升序降序序列(最长升序序列)
- ACM中使用JAVA v2.1
- 关于在cocos2dx中继承Sprite的分析与技巧
- js实现网页提示框的弹出
- android 4 访问web service的一个简单例子
- 《从设计到模式》学习笔记part1
- java最长升序子序列
- 利用.htaccess 对一些文件或目录禁止访问
- dialog-style里的属性
- <context:component-scan>使用说明
- Linux 查找重复ID数据
- 编程之美2.8 找符合条件的整数
- try-catch-finally中return的执行情况
- How to install Mediaproxy 2.5.2 on CentOS 6 64 bit
- Merge Sort归并排序