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 Boot Gradle Plugin
“Stream has already been operated upon or closed” Exception in Java
Logging in Spring Boot
Spring Security with Maven
REST Web service: HTTP Status Code và xử lý ngoại lệ RESTful web service với Jersey 2.x
Java Program to Implement Floyd Cycle Algorithm
Java Program to Implement Gale Shapley Algorithm
Java Program to Implement Patricia Trie
Java Program to implement Bit Set
Java Program to Implement Floyd-Warshall Algorithm
Receive email by java client
Spring Security Remember Me
A Guide to Java HashMap
Converting Between a List and a Set in Java
Java Program for Douglas-Peucker Algorithm Implementation
Java Program to Implement Graph Coloring Algorithm
Java 8 Stream findFirst() vs. findAny()
Spring Boot with Multiple SQL Import Files
Java Program to Implement Ternary Search Algorithm
Java Program to Implement Threaded Binary Tree
Java Program to Implement Coppersmith Freivald’s Algorithm
Spring REST API + OAuth2 + Angular
Guide to Character Encoding
Spring Boot: Customize the Jackson ObjectMapper
Disable Spring Data Auto Configuration
Vòng lặp for, while, do-while trong Java
Java Program to Implement Wagner and Fisher Algorithm for online String Matching
Guide to DelayQueue
Java Program to Perform Partition of an Integer in All Possible Ways
Spring Webflux and CORS
Java Program to Implement Doubly Linked List
A Guide to the ResourceBundle