Hallo liebe java Freunde,
ich bin gerade dabei den Knuth-Morris-Pratt-Algorithmus zu implementieren allerdings bekomme ich ihn nicht zum laufen. Vielleicht kann mir hier ja jemand weiterhelfen, ich hoffe ich bin im richtigen Bereich für solche Fragen! Wusste leider nicht wie ich den Code in "Code-Style" poste.
ich bin gerade dabei den Knuth-Morris-Pratt-Algorithmus zu implementieren allerdings bekomme ich ihn nicht zum laufen. Vielleicht kann mir hier ja jemand weiterhelfen, ich hoffe ich bin im richtigen Bereich für solche Fragen! Wusste leider nicht wie ich den Code in "Code-Style" poste.
Java:
public class A1 {
private String text = "";
private String pattern = "";
private int laengeText = 0;
private int laengePattern = 0;
private int p[];
private int t[];
private int pi[];
public void init(String pText, String pPattern)
{
p = int[laengePattern];
t = int[laengeText];
text = pText;
pattern = pPattern;
laengeText = text.length();
laengePattern = pattern.length();
for(int i = 0; i< laengePattern; i++)
{
p[i] = i;
}
}
public void piFunktion()
{
pi= int[laengePattern];
int k = 0;
for(int q = 2; q < laengePattern; q++)
{
while (k>0 && p[k+1]!=p[q])
{
k = pi[k];
if (p[k+1]==p[q])
{
k = k+1;
}
pi[q] = k;
}
}
public void kmp()
{
int q = 0;
for(int i=1; i<laengeText; i++)
{
while(q>0 && p[q+1]!= t[i])
{
q = pi[q];
}
if(p[q+1]==t[i])
{
q = q+1;
}
if(q==laengePattern)
{
System.out.println("Vorkommen bei shift: " + i-laengePattern);
}
q = pi[q];
}
}
public static void main(String[] args)
{
init("babcdabcabcaabcabcac", "abcabcac");
piFunktion();
KMP();
}
}
Zuletzt bearbeitet von einem Moderator: