Java 比较多个子字符串
我想写一个基本的dna测序仪。在这种情况下,给定两个长度相同的序列,它将输出相同的字符串,最小长度为3。 所以输入Java 比较多个子字符串,java,substring,dna-sequence,Java,Substring,Dna Sequence,我想写一个基本的dna测序仪。在这种情况下,给定两个长度相同的序列,它将输出相同的字符串,最小长度为3。 所以输入 abcdef dfeabc 会回来的 1 abc 我不知道如何着手解决这个问题。 我可以比较这两个字符串,看看它们是否完全相等。从那里,我可以比较长度为1的字符串大小,即如果dfeabc包含abcde。但是,我如何让程序执行所有可能的字符串,直到最小的3个字符? 一个问题是,对于上面的length-1示例,我还必须处理字符串bcdef并进行比较 最简单的方法是获取字符串A的每个
abcdef dfeabc
会回来的
1 abc
我不知道如何着手解决这个问题。
我可以比较这两个字符串,看看它们是否完全相等。从那里,我可以比较长度为1的字符串大小,即如果dfeabc
包含abcde
。但是,我如何让程序执行所有可能的字符串,直到最小的3个字符?
一个问题是,对于上面的length-1示例,我还必须处理字符串bcdef并进行比较 最简单的方法是获取字符串A的每个子字符串,然后查看它是否在字符串B中 下面是一种天真的方法:
for ( int i = 0; i < a.length; i++ ) {
for ( int j = i+1; j <= a.length; j++ ) {
if (b.contains(a.substring(i, j))) {
//if longer than last found match, record this match
}
}
}
for(int i=0;i
如果您想用一种简单的方法来解决这个问题,而不使用任何Java API进行搜索,您可以这样想:对于第一个字符串中的每一对可能的起始索引i和第二个字符串中的j,在第一个字符串和第二个字符串中的对应字符相等的情况下向前迈进,如果您至少完成了3个步骤。您需要使用最长的通用子字符串算法,一个动态规划问题。查看Wikipedia,了解算法的解释和示例实现。当然是出于好意,但对家庭作业问题帮助太多,IMO:-)嗯,我在想,这是不是家庭作业,他说可能不允许使用contains方法(那是作弊)所以他仍然有一些空白需要填补。老实说,这是完美的,我已经有了一些接近的东西,我只是没有第二个长度的循环,使它正常工作。这是真的,我不能使用包含,所以还有一点要做。它甚至不是一个任务,只是一个实验室,所以我需要的是天真的解决方案。
for ( int length = a.length; length > 0; length-- ) {
for ( int i = 0; i + length < a.length; i++ ) {
if ( b.contains(a.substring(i, i+length)) ) {
//this is the biggest match
}
}
}