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:
Mapping Nested Values with Jackson
Java Program to Check whether Undirected Graph is Connected using DFS
Java Program to Perform Right Rotation on a Binary Search Tree
Java Program to Implement the Vigenere Cypher
Vector trong Java
Vòng lặp for, while, do-while trong Java
Java Program to Permute All Letters of an Input String
The DAO with JPA and Spring
Java Program to Check Whether an Undirected Graph Contains a Eulerian Path
Wiring in Spring: @Autowired, @Resource and @Inject
Java Program to Implement Suffix Tree
Add Multiple Items to an Java ArrayList
Check if there is mail waiting
Java Program to Implement Patricia Trie
Xử lý ngoại lệ trong Java (Exception Handling)
Transactions with Spring and JPA
Java Program to Implement Floyd-Warshall Algorithm
Concatenating Strings In Java
Spring Boot - Enabling HTTPS
Introduction to Spliterator in Java
Java Program to Implement Rope
OAuth2.0 and Dynamic Client Registration
Java Program to Implement Gauss Seidel Method
Exception Handling in Java
SOAP Web service: Upload và Download file sử dụng MTOM trong JAX-WS
Registration with Spring Security – Password Encoding
Guide to BufferedReader
Java Program to Implement Stack API
Java Program to Implement K Way Merge Algorithm
Java 8 and Infinite Streams
How to Manually Authenticate User with Spring Security
Tìm hiểu cơ chế Lazy Evaluation của Stream trong Java 8