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:
Java Program to Implement vector
wait() and notify() Methods in Java
Java Program to Implement a Binary Search Tree using Linked Lists
Java Program to Evaluate an Expression using Stacks
Ways to Iterate Over a List in Java
A Quick Guide to Spring Cloud Consul
How to Add a Single Element to a Stream
Tính trừu tượng (Abstraction) trong Java
Generate Spring Boot REST Client with Swagger
Spring MVC Async vs Spring WebFlux
Beans and Dependency Injection
Java Program to Implement Aho-Corasick Algorithm for String Matching
Java Program to Implement LinkedBlockingDeque API
Limiting Query Results with JPA and Spring Data JPA
Case-Insensitive String Matching in Java
Java Program to Search Number Using Divide and Conquer with the Aid of Fibonacci Numbers
Java – Reader to InputStream
Jackson Exceptions – Problems and Solutions
Java Program to Solve Travelling Salesman Problem for Unweighted Graph
Merging Streams in Java
An Intro to Spring Cloud Task
Ignore Null Fields with Jackson
Phương thức forEach() trong java 8
Java Program to Implement HashSet API
Spring Boot - Rest Controller Unit Test
Guide to the Volatile Keyword in Java
Java Program to Implement LinkedHashMap API
Java Program to Find MST (Minimum Spanning Tree) using Prim’s Algorithm
Java Program to Check if a Matrix is Invertible
New Features in Java 14
Custom Error Pages with Spring MVC
Spring Data Reactive Repositories with MongoDB