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:
Spring Webflux and CORS
Java Program to Perform Left Rotation on a Binary Search Tree
Reading an HTTP Response Body as a String in Java
Hướng dẫn Java Design Pattern – Chain of Responsibility
Java Program to Implement Hash Trie
Biểu thức Lambda trong Java 8 – Lambda Expressions
Java 9 Stream API Improvements
The XOR Operator in Java
Java Program to Find Number of Articulation points in a Graph
Guava Collections Cookbook
Java Program to Implement Hash Tables with Quadratic Probing
Encode a String to UTF-8 in Java
A Quick Guide to Spring MVC Matrix Variables
Java Program to Find Minimum Number of Edges to Cut to make the Graph Disconnected
Tạo ứng dụng Java RESTful Client với thư viện Retrofit
Java Program to Print only Odd Numbered Levels of a Tree
Java Program to Implement Hash Tables Chaining with Doubly Linked Lists
Lập trình đa luồng trong Java (Java Multi-threading)
Spring Boot - Cloud Configuration Server
Spring Boot - CORS Support
Control Structures in Java
Java Program to Implement ScapeGoat Tree
Java Program to Implement Splay Tree
Dynamic Proxies in Java
Convert Character Array to String in Java
Spring Boot - Enabling HTTPS
Java Program to Perform Stooge Sort
Implementing a Binary Tree in Java
Java Program to Solve a Matching Problem for a Given Specific Case
Giới thiệu Aspect Oriented Programming (AOP)
Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java
Entity To DTO Conversion for a Spring REST API