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**

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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 ` `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); ` ` `  `    ``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 :