This Java program is to Implement Suffix arrayIn computer science, a suffix array is a sorted array of all suffixes of a string. It is a simple, yet powerful data structure which is used, among others, in full text indices, data compression algorithms and within the field of bioinformatics.
Here is the source code of the Java program to implement suffix array. The Java program is successfully compiled and run on a Linux system. The program output is also shown below.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class SuffixArray
{
private String[] text;
private int length;
private int[] index;
private String[] suffix;
public SuffixArray(String text)
{
this.text = new String[text.length()];
for (int i = 0; i < text.length(); i++)
{
this.text[i] = text.substring(i, i+1);
}
this.length = text.length();
this.index = new int[length];
for (int i = 0; i < length; i++)
{
index[i] = i;
}
suffix = new String[length];
}
public void createSuffixArray()
{
for(int index = 0; index < length; index++)
{
String text = "";
for (int text_index = index; text_index < length; text_index++)
{
text+=this.text[text_index];
}
suffix[index] = text;
}
int back;
for (int iteration = 1; iteration < length; iteration++)
{
String key = suffix[iteration];
int keyindex = index[iteration];
for (back = iteration - 1; back >= 0; back--)
{
if (suffix[back].compareTo(key) > 0)
{
suffix[back + 1] = suffix[back];
index[back + 1] = index[back];
}
else
{
break;
}
}
suffix[ back + 1 ] = key;
index[back + 1 ] = keyindex;
}
System.out.println("SUFFIX \t INDEX");
for (int iterate = 0; iterate < length; iterate++)
{
System.out.println(suffix[iterate] + "\t" + index[iterate]);
}
}
public static void main(String...arg)throws IOException
{
String text = "";
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter the Text String ");
text = reader.readLine();
SuffixArray suffixarray = new SuffixArray(text);
suffixarray.createSuffixArray();
}
}
$javac SuffixArray.java $java SuffixArray Enter the Text String banana SUFFIX INDEX a 5 ana 3 anana 1 banana 0 na 4 nana 2
Related posts:
Setting a Request Timeout for a Spring REST API
Java Program to Implement Doubly Linked List
Collect a Java Stream to an Immutable Collection
An Intro to Spring Cloud Contract
Java Program to Implement Max Heap
Creating a Generic Array in Java
Java Program to Perform Searching Based on Locality of Reference
Reactive WebSockets with Spring 5
Java Program to Find a Good Feedback Vertex Set
Disable DNS caching
Netflix Archaius with Various Database Configurations
Java Program to Check whether Graph is a Bipartite using BFS
Guide to java.util.Formatter
Java 8 – Powerful Comparison with Lambdas
Enum trong java
Custom Error Pages with Spring MVC
Spring Boot - Eureka Server
Java Program to Check if a Directed Graph is a Tree or Not Using DFS
Java Program to Implement Vector API
A Guide To UDP In Java
Format ZonedDateTime to String
Java – Convert File to InputStream
Java Program to Implement Bubble Sort
Spring Autowiring of Generic Types
Call Methods at Runtime Using Java Reflection
Immutable Map Implementations in Java
Spring MVC Tutorial
How to Store Duplicate Keys in a Map in Java?
Java Program to Compute DFT Coefficients Directly
Introduction to Netflix Archaius with Spring Cloud
Spring Security OAuth2 – Simple Token Revocation
Java Program to Implement Fermat Primality Test Algorithm