VOOZH about

URL: https://www.geeksforgeeks.org/dsa/find-the-suffix-array-of-given-string-with-no-repeating-character/

⇱ Find the Suffix Array of given String with no repeating character - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Find the Suffix Array of given String with no repeating character

Last Updated : 23 Jul, 2025

Given a string str of size N, the task is to find the suffix array of the given string.

Note: A suffix array is a sorted array of all suffixes of a given string.

Examples: 

Input: str = "prince"
Output: 4 5 2 3 0 1
Explanation: The suffixes are
0 prince                                    4 ce
1 rince      Sort the suffixes       5 e  
2 ince         ---------------->    2 ince  
3 nce          alphabetically        3 nce    
4 ce                                          0 prince
5 e                                           1 rince

Input: str = "abcd"
Output: 0 1 2 3

Approach: The methods of suffix array finding for any string are discussed here. In this article, the focus is on finding suffix array for strings with no repeating character. It is a simple implementation based problem. Follow the steps mentioned below to solve the problem:

  • Count occurrence of each character.
  • Find prefix sum of it.
  • Find start array by start[0] = 0, start[i+1] = prefix[i] for all i > 0 .
  • Find start array containing the index of the substring (suffix) with starting character of the respective column.

Follow the illustration below for better understanding.

Illustration:

Consider string "prince":
Given below is the suffix table 

charabcdefghijklmnopqrstuvwxyz
count00101000100001010100000000
prefix00112222333334455666666666
start00011222233333445566666666

For char 'r' start value is 5 . 
Implies substring (suffix) starting with char 'r' i.e. "rince" has rank 5 .
Rank is position in suffix array.  ( 1 "rince" ) implies 5th position in suffix array ), refer first table.
Similarly, start value of char 'n' is 3 . Implies ( 3 "nce" ) 3rd position in suffix array .

  Below is the implementation of the above approach

 
 


Output
4 5 2 3 0 1 


 

Time Complexity: O(N)
Auxiliary Space: O(N)


 

Comment