Skip to content
Related Articles

Related Articles

Substring Reverse Pattern
  • Difficulty Level : Easy
  • Last Updated : 05 Feb, 2019

Given a string str, the task is to print the pattern given in the examples below:

Examples:

Input: str = “geeks”
Output:
geeks
*kee*
**e**
Reverse of “geeks” is “skeeg”
Replace first and last character with ‘*’ i.e. *kee*
Replace second and second last character in the modified string i.e. **e**
And so on.

Input: str = “first”
Output:
first
*sri*
**r**

Approach:



  • Print the unmodified string.
  • Reverse the string and initialize i = 0 and j = n – 1.
  • Replace s[i] = ‘*’ and s[j] = ‘*’ and update i = i + 1 and j = j – 1 then print the modified string.
  • Repeat the above steps while j – i > 1.

Below is the implementation of the above approach:

C++




// C++ program to print the required pattern
#include <bits/stdc++.h>
using namespace std;
  
// Function to print the required pattern
void printPattern(char s[], int n)
{
  
    // Print the unmodified string
    cout << s << "\n";
  
    // Reverse the string
    int i = 0, j = n - 2;
    while (i < j) {
        char c = s[i];
        s[i] = s[j];
        s[j] = c;
        i++;
        j--;
    }
  
    // Replace the first and last character by '*' then
    // second and second last character and so on
    // until the string has characters remaining
    i = 0;
    j = n - 2;
    while (j - i > 1) {
        s[i] = s[j] = '*';
        cout << s << "\n";
        i++;
        j--;
    }
}
  
// Driver code
int main()
{
    char s[] = "geeks";
    int n = sizeof(s) / sizeof(s[0]);
  
    printPattern(s, n);
    return 0;
}


Java




// Java program to print the required pattern 
class GFG
{
      
// Function to print the required pattern 
static void printPattern(char[] s, int n) 
    // Print the unmodified string 
    System.out.println(s); 
  
    // Reverse the string 
    int i = 0, j = n - 1
    while (i < j) 
    
        char c = s[i]; 
        s[i] = s[j]; 
        s[j] = c; 
        i++; 
        j--; 
    
  
    // Replace the first and last character 
    // by '*' then second and second last 
    // character and so on until the string
    // has characters remaining 
    i = 0
    j = n - 1
    while (j - i > 1
    
        s[i] = s[j] = '*'
        System.out.println(s);
        i++; 
        j--; 
    
  
// Driver Code
public static void main(String []args)
{
    char[] s = "geeks".toCharArray(); 
    int n = s.length; 
  
    printPattern(s, n);
}
}
  
// This code is contributed by Rituraj Jain


Python3




# Python3 program to print the required pattern 
  
# Function to print the required pattern 
def printPattern(s, n): 
  
    # Print the unmodified string 
    print(''.join(s))
  
    # Reverse the string 
    i, j = 0, n - 1
      
    while i < j: 
        s[i], s[j] = s[j], s[i] 
        i += 1
        j -= 1
      
    # Replace the first and last character 
    # by '*' then second and second last 
    # character and so on until the string
    # has characters remaining 
    i, j = 0, n - 1
      
    while j - i > 1
        s[i], s[j] = '*', '*'
        print(''.join(s)) 
        i += 1
        j -= 1
  
# Driver code 
if __name__ == "__main__":
  
    s = "geeks"
    n = len(s)
  
    printPattern(list(s), n) 
      
# This code is contributed
# by Rituraj Jain


C#




// C# program to print the required pattern 
using System;
  
class GFG
{
      
// Function to print the required pattern 
static void printPattern(char[] s, int n) 
    // Print the unmodified string 
    Console.WriteLine(s); 
  
    // Reverse the string 
    int i = 0, j = n - 1; 
    while (i < j) 
    
        char c = s[i]; 
        s[i] = s[j]; 
        s[j] = c; 
        i++; 
        j--; 
    
  
    // Replace the first and last character 
    // by '*' then second and second last 
    // character and so on until the string
    // has characters remaining 
    i = 0; 
    j = n - 1; 
    while (j - i > 1) 
    
        s[i] = s[j] = '*'
        Console.WriteLine(s);
        i++; 
        j--; 
    
  
// Driver Code
public static void Main(String []args)
{
    char[] s = "geeks".ToCharArray(); 
    int n = s.Length; 
  
    printPattern(s, n);
}
}
  
// This code is contributed by 29AjayKumar


Output:

geeks
*kee*
**e**

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 :