Skip to content
Related Articles

Related Articles

Concatenate suffixes of a String
  • Last Updated : 18 Jun, 2019

Given a string str the task is to expand the string as follows:
If the string is abcd, the resultant string will be d, cd, bcd and abcd in the concatenated form i.e. dcdbcdabcd. We basically need to concatenate all suffixes.

Examples:

Input: str = “geeks”
Output: sksekseeksgeeks

Input str = “water”
Output rerteraterwater

Simple Approach:



  • Iterate through the string in reverse order i.e. from the last index to the first.
  • Print the sub-strings from the current index position till the end of the string.

Below is the implementation of the above approach:

C++




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
  
// Function to print the expansion of the string
void printExpansion(string str)
{
    int size = 0;
    for (int i = str.length() - 1; i >= 0; i--) {
  
        // Take sub-string from i to n-1
        string subStr = str.substr(i, ++size);
  
        // Print the sub-string
        cout << subStr;
    }
}
  
// Driver code
int main()
{
    string str = "geeks";
    printExpansion(str);
  
    return 0;
}


Java




// Java implementation of the approach 
  
public class  GFG {
  
    // Function to print the expansion of the string 
    static void printExpansion(String str) 
    
        for (int i = str.length() - 1; i >= 0; i--) { 
      
            // Take sub-string from i to n-1 
            String subStr = str.substring(i); 
      
            // Print the sub-string 
            System.out.print(subStr); 
  
        
    
  
    // Driver code 
    public static void main(String args[])  
    
        String str = "geeks"
        printExpansion(str); 
      
    
    // This code is contributed by Ryuga
}


Python3




# Python3 implementation of the approach
  
# Function to print the expansion of the string
def printExpansion(str):
    for i in range(len(str)-1, -1, -1):
  
        # Take sub-string from i to n-1
        for j in range(i, len(str)):
            print(str[j], end ="")
  
# Driver code
str = "geeks"
printExpansion(str)


C#




// C# implementation of the approach 
 using System;
class  GFG {
   
    // Function to print the expansion of the string 
    static void printExpansion(String str) 
    
        for (int i = (int)str.Length - 1; i >= 0; i--) { 
       
            // Take sub-string from i to n-1 
            String subStr = str.Substring(i); 
       
            // Print the sub-string 
            Console.Write(subStr); 
   
        
    
   
    // Driver code 
    static public void Main(String []args)  
    
        String str = "geeks"
        printExpansion(str); 
       
    
}
    // This code is contributed by Arnab Kundu


Output:

sksekseeksgeeks

Efficient Approach:
Maintain a suffix string (which is initially empty). Keep traversing from end and keep appending current character.

C++




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
  
// Function to print the expansion of the string
void printExpansion(string str)
{
    string suff = "";
    for (int i = str.length() - 1; i >= 0; i--) {
  
        // Take sub-string from i to n-1
        suff = suff + str[i];
  
        // Print the sub-string
        cout << suff;
    }
}
  
// Driver code
int main()
{
    string str = "geeks";
    printExpansion(str);
  
    return 0;
}


Java




// Java implementation of the approach
import java.util.*;
  
class solution
{
  
// Function to print the expansion of the string
static void printExpansion(String str)
{
    String suff = "";
    for (int i = str.length() - 1; i >= 0; i--) {
  
        // Take sub-string from i to n-1
        suff = suff + str.charAt(i);
  
        // Print the sub-string
        System.out.print(suff);
    }
}
  
// Driver code
public static void main(String args[])
{
    String str = "geeks";
    printExpansion(str);
  
}
}


Python3




# Python3 implementation of the approach
  
# Function to print the expansion 
# of the string
def printExpansion( str):
  
    suff = ""
    for i in range (len (str) - 1, -1, -1) :
  
        # Take sub-string from i to n-1
        suff = suff + str[i]
  
        # Print the sub-string
        print (suff, end = "")
  
# Driver code
if __name__ == "__main__":
  
    str = "geeks"
    printExpansion(str)
  
# This code is contributed by ita_c


C#




// C# Implementation of the above approach
using System;
      
class GFG
{
  
// Function to print 
// the expansion of the string
static void printExpansion(String str)
{
    String suff = "";
    for (int i = str.Length - 1; 
             i >= 0; i--) 
    {
  
        // Take sub-string from i to n-1
        suff = suff + str[i];
  
        // Print the sub-string
        Console.Write(suff);
    }
}
  
// Driver code
public static void Main(String []args)
{
    String str = "geeks";
    printExpansion(str);
}
}
  
// This code is contributed by PrinciRaj1992 


Output:

sskskeskeeskeeg

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :