import java.util.*;
//Longest Prefix Which Is Also Suffix Which Is Used To Found a Pattern Through
Avoid Repeated Characters in Given String. We Will Discuss KMP ALGORITHM TO
Find A Pattern In Given String Latter.
class lbs{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
//Get Input From User
String s=in.nextLine();
//Convert String Into Char Array
char[] ch=s.toCharArray();
int n=s.length();
int[] lbsArr=new int[n];
int j=0,i=1;
lbsArr[0]=0;
//LPS ARRAY ALGORITHM
/*
i=1;
j=0;
string s="aaab"
while i<n
if s[i]==s[j]:
lpsArr[i]=j;
j=j+1
i=i+1
else:
if j==0:
lbsArr[j]=0
i=i+1
else:
j=lbsArr[j-1];
lbsArr[i]=j
*/
while(i<n){
if(ch[j]==ch[i]){
lbsArr[i]=++j;
i+=1;
}
else{
if(j==0){
lbsArr[i]=j;
i+=1;
}
else{
j=lbsArr[j-1];
lbsArr[i]=j;
}
}
}
for(int k=0;k<n;k++){
System.out.print(lbsArr[k]);
}
}
}
output 1:
aaaa
0123
output 2:
abcd
0000
output 3:
aabaacaabaa
01012012345
Nice keep it up
ReplyDelete