与えられたサンプル入力データに対して以下のコードをテストでき、正常に検証できました。
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();
}
}