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 Find Nearest Neighbor Using Linear Search
Java Program to Implement Pollard Rho Algorithm
Hashing a Password in Java
Spring Security Login Page with React
Java Program to Implement Floyd Cycle Algorithm
Spring Boot - CORS Support
Reading an HTTP Response Body as a String in Java
Guide to the Java Queue Interface
Hướng dẫn Java Design Pattern – Composite
MyBatis with Spring
Java 8 Predicate Chain
Java – Combine Multiple Collections
Java Program to Implement Knight’s Tour Problem
Hướng dẫn sử dụng lớp Console trong java
New Features in Java 11
Getting a File’s Mime Type in Java
Java Program to Implement Queue using Linked List
Java 8 Stream API Analogies in Kotlin
Java List UnsupportedOperationException
New Features in Java 10
Service Registration with Eureka
Java Program to Check the Connectivity of Graph Using DFS
Spring Security Form Login
Tránh lỗi NullPointerException trong Java như thế nào?
Java Program to Find Transitive Closure of a Graph
Registration – Activate a New Account by Email
Convert String to Byte Array and Reverse in Java
Java Program to Implement LinkedBlockingDeque API
Hướng dẫn Java Design Pattern – MVC
Create a Custom Exception in Java
Java – String to Reader
Java Program to Implement Skew Heap