我能够针对给定的示例输入数据测试以下代码,并且能够成功验证。
http://rosalind.info/problems/1c/
但不知何故,对于我下载的任何数据集,网站都没有接受答案。我不确定我是否遗漏了什么。
我为此使用了朴素的 indexOf 函数。除非输入字符串真的很大,否则不确定是否真的需要 KMP。
import java.util.*;
import java.lang.*;
import java.io.*;
class PatternMatch
{
public static StringBuilder out = new StringBuilder();
public static void main (String[] args) throws java.lang.Exception
{
try{
System.out.println(match("GATATATGCATATACTT","ATAT",0));
}catch(Throwable e){
System.out.println("excepton "+e.getMessage());
}
}
static String match(String text,String pat,int start){
if(start+pat.length()-1<text.length()){
int matchPos = text.indexOf(pat,start);
if(matchPos>0){
out.append(matchPos+" ");
match(text,pat,matchPos+1);
} else {
return out.toString();
}
} else {
return out.toString();
}
return out.toString();
}
}