Skip to main content

LPS(Longest Prefix Which Is Also Suffix) Array Generation Using Java

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

Comments

Post a Comment

Popular posts from this blog

if control statement - Basic Programming Concepts With psudo Code

if( )  is a control statement. it based on some condition. if the condition can true the block of statements can execute other wise skip the statements. syntax if([condition]) { //statement; } example1, #include<stdio.h> #include<conio.h> main() int num=1; { if(num==1) { printf("\n its true"); } } from the above program we can declare the variable named as num and assign the value as 1. then, check the value 1 equal value of num through if statement.the statement can true.so, the block of statements can executed. example2, #include<stdio.h> #include<conio.h> main() int num=5; { if(num==1) { printf("\n its true"); } } suppose the value of num is 5.the block of if statement can skip to execution.