السلام عليكم ورحمة الله وبركاته
قمت بعمل برنامج لــ Horspool's algorithm
ويطلع معي خطأ حاولت أعمل debug لكن لم أعرف السبب بالضبط
وبحثت ايضًا ولم أجد العلة
يااليت تفيدوني
ولكم جزيل الشكر .....
Shift Table algorithm
Horspool's algorithm
الكود .....
import java.util.*;
public class Project {
static int [] Table=new int[28];
public static void main(String[] args) {
char []t=new char[1000];
char []p=new char[100];
int x;
Scanner scan=new Scanner(System.in );
System.out.println("Enter Text : ");
String s=scan.nextLine();
for(int i=0;i<s.length();i++)
{
t=s.charAt(i);
}
System.out.println("Enter pattren : ");
String str=scan.nextLine();
for(int i=0;i<str.length();i++)
{
p=str.charAt(i);
}
x=HM(p,t);
if(x==-1)
{ System.out.println("Not Matching ");}
else
{System.out.println(" Matching ");}
}
static int HM(char []p ,char []t)
{
int k;
int m =p.length;
int n =t.length;
shiftTable(p);
int i=m-1;
while(i<=n-1)
{
k=0;
while(k<=m-1 && p[m-1-k]==t[i-k])
{
k=k+1;
}
if(k==m)
{ return (i-m+1);}
else
{i=i+Table[t];}
}
return -1;
}
static int[] shiftTable (char []p)
{
int m =p.length;
for(int k=0;k<=27;k++)
{
Table[k]=m;
}
for(int j=0;j<=m-2;j++)
{
Table[p[j]]= m-1-j;
}
return Table;
}
}


