Substring Reverse Pattern
Given string str, the task is to print the pattern given in the examples below:
Examples:
Input: str = “Beginner”
Output:
Beginner
*kee*
**e**
The reverse of “Beginner” is “skeeg”
Replace the first and last characters with ‘*’ i.e. *kee*
Replace the 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[] = "Beginner" ; 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 = "Beginner" .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 = "Beginner" 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 = "Beginner" .ToCharArray(); int n = s.Length; printPattern(s, n); } } // This code is contributed by 29AjayKumar |
Javascript
<script> // Javascript program to print the required pattern // Function to print the required pattern function printPattern(s, n) { // Print the unmodified string document.write( s.join( '' ) + "<br>" ); // Reverse the string var i = 0, j = n - 1; while (i < j) { var 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] = '*' ; document.write( s.join( '' ) + "<br>" ); i++; j--; } } // Driver code var s = "Beginner" .split( '' ); var n = s.length; printPattern(s, n); </script> |
Output
Beginner *kee* **e**
Complexity Analysis:
- Time Complexity: O(N) since one traversal of the string is required to complete all operations hence the overall time required by the algorithm is linear
- Auxiliary Space: O(1) since no extra array is used so the space taken by the algorithm is constant