`
sugongqing
  • 浏览: 77215 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

LCS2

阅读更多
public class TestMain {

	public static void getLCString(char[] str1, char[] str2) {
		int i, j;
		int len1, len2;
		len1 = str1.length;
		len2 = str2.length;
		int maxLen = len1 > len2 ? len1 : len2;
		int[] max = new int[maxLen];
		int[] maxIndex = new int[maxLen];
		int[] c = new int[maxLen];

		for (i = 0; i < len2; i++) {
			for (j = len1 - 1; j >= 0; j--) {
				if (str2[i] == str1[j]) {
					if ((i == 0) || (j == 0))
						c[j] = 1;
					else
						c[j] = c[j - 1] + 1;
				} else {
					c[j] = 0;
				}

				if (c[j] > max[0]) 
				{ // 如果是大于那暂时只有一个是最长的,而且要把后面的清0;
					max[0] = c[j];
					maxIndex[0] = j;

					for (int k = 1; k < maxLen; k++) 
					{
						max[k] = 0;
						maxIndex[k] = 0;
					}
				}
				else if (c[j] == max[0]) 
				{ // 有多个是相同长度的子串
					for (int k = 1; k < maxLen; k++) {
						if (max[k] == 0) {
							max[k] = c[j];
							maxIndex[k] = j;
							break; // 在后面加一个就要退出循环了
						}

					}
				}
			}
		}

		for (j = 0; j < maxLen; j++) {
			if (max[j] > 0) {
				System.out.println("第" + (j + 1) + "个公共子串:");
				for (i = maxIndex[j] - max[j] + 1; i <= maxIndex[j]; i++)
					System.out.print(str1[i]);
				System.out.println(" ");
			}
		}
	}

	public static void main(String[] args) {

		String str1 = new String("SugAAA");
		String str2 = new String("SuSu");
		getLCString(str1.toCharArray(), str2.toCharArray());
	}
}

 

分享到:
评论

相关推荐

    LCS.rar_www.lcs2z.com

    给定2个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。 你的任务是:给定2个序列X、Y,求X和Y的最长公共子序列Z

    LCS算法java源代码

    根据LCS算法取出最长公用字符串,实现字符串比较

    最长子序列LCS算法

    最长子序列LCS算法,用于处理最长公共字串问题。 两个序列的LCS问题包含两个序列的前缀的LCS,因此,LCS问题具有最优子结构性质。在设计递归算法时,不难看出递归算法具有子问题重叠的性质。   设C[i,j]C[i,j]...

    LCS和CLCS的java实现

    2. Constrained LCS. Given two sequences X, Y and a constrained sequence P, a sequence Z is a constrained longest common subsequence for X and Y with respect to P if Z is the longest subsequence of X ...

    罗格朗LCS2综合布线产品在信息系统研究平台的应用

    此项目为中科院自动化所智能化信息系统研究平台,大楼整体楼上十七层,楼下三层,项目主要为先进机器人研究、综合信息系统研究、专用集成电路工程技术研究等科研工作用房及相关配套设施。总面积约为30000平米,根据...

    LCS的实现代码

    LCS的一个实现,具体分析见我的博文《动态规划2》,大家一起学习,开发环境VS2008

    lcs.rar_LCS_lcs dynamic

    动态规划实现lcs

    lcs部署安装.doc

    lcs的部署安装文档,里面包含了lcs的环境配置,和安装时出现的问题

    C#写的LCS算法

    最长公共子序列,即LCS算法,用C#写的LCS算法实现过程

    lcs架构

    lcs架构,视频演示!

    LCS算法(连续)

    LCS(Longest common string)连续问题的求解,C++编写,稳定,高效.

    LCS算法源码

    LCS算法源码

    最长公共子序列LCS(c++)

    使用c++语言编写的LCS问题的求解过程

    LCS(最长公共子序列)算法的实现

    关于LCS(最长公共子序列)算法的实现~ 自己测试通过的

    lcs.zip_LCS

    最长公共子序列问题(LCS)(生物信息学中常用算法),该算法能求出全部的LCS

    动态规划:最长公共子串 LCS

    动态规划:最长公共子串 LCS 动态规划:最长公共子串 LCS

    LCS.rar_lCS实验数据

    是X的子序列,是指存在一个严格递增的下标序列〈i1,i2,…,ik〉使得对于所有j=1,2,…,k使Z中第j个元素zj与X中第ij个元素相同。 给定2个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子...

    LCS.rar_LCS

    lcs 最大公共字串 最大公共字串 最大公共字串

    lcs.rar_Java实现lcs_LCS

    这是一个实现lcs算法问题的java代码,其中有比较简单的swing和AWT的使用,但是算法是成功的可以借鉴

    求解LCS算法

    求解最长公共子序列LCS的算法,亲测可用,快来下载吧

Global site tag (gtag.js) - Google Analytics