# Reverse Middle X Characters

Given a string str and an integer X. The task is to reverse the middle X characters of the given string and then print the modified string. Note that len(str) – X is always even.

Examples:

Input: str = “geeksforgeeks”, X = 3
Output: geeksrofgeeks
Middle three character are “geeksforgeeks”
Hence the resultant string is “geeksrofgeeks”

Input: str = “acknowledgement”, X = 7
Output: acknegdelwoment

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

Approach:

• Since we need not reverse the first and last few character. Find the number of characters that we need not reverse in the beginning and in the end i.e. n = len(str) – X / 2.
• Print the first n characters as it is.
• Then print the middle x characters starting from n + 1 in reverse order.
• Finally, the last n characters as it is.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function to reverse the middle x characters in a string ` `void` `reverse(string str, ``int` `x) ` `{ ` `    ``// Find the position from where ` `    ``// the characters have to be reversed ` `    ``int` `n = (str.length() - x) / 2; ` ` `  `    ``// Print the first n characters ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``cout << str[i]; ` ` `  `    ``// Print the middle x characters in reverse ` `    ``for` `(``int` `i = n + x - 1; i >= n; i--) ` `        ``cout << str[i]; ` ` `  `    ``// Print the last n characters ` `    ``for` `(``int` `i = n + x; i < str.length(); i++) ` `        ``cout << str[i]; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``string str = ``"geeksforgeeks"``; ` `    ``int` `x = 3; ` `    ``reverse(str, x); ` `    ``return` `0; ` `} `

## Java

 `// Java implementation of the above approach  ` `class` `GfG ` `{ ` ` `  `    ``// Function to reverse the middle x  ` `    ``// characters in a string  ` `    ``static` `void` `reverse(String str, ``int` `x)  ` `    ``{  ` `        ``// Find the position from where  ` `        ``// the characters have to be reversed  ` `        ``int` `n = (str.length() - x) / ``2``;  ` `     `  `        ``// Print the first n characters  ` `        ``for` `(``int` `i = ``0``; i < n; i++)  ` `            ``System.out.print(str.charAt(i));  ` `     `  `        ``// Print the middle x characters in reverse  ` `        ``for` `(``int` `i = n + x - ``1``; i >= n; i--)  ` `            ``System.out.print(str.charAt(i));  ` `     `  `        ``// Print the last n characters  ` `        ``for` `(``int` `i = n + x; i < str.length(); i++)  ` `            ``System.out.print(str.charAt(i));  ` `    ``}  ` ` `  `    ``// Drived code ` `    ``public` `static` `void` `main(String []args) ` `    ``{ ` `        ``String str = ``"geeksforgeeks"``;  ` `        ``int` `x = ``3``;  ` `        ``reverse(str, x);  ` `    ``} ` `} ` ` `  `// This code is contributed by Rituraj Jain `

## Python3

 `# Python3 implementation of the approach ` ` `  `# Function to reverse the middle x characters in a str1ing ` `def` `reverse(str1, x): ` ` `  `    ``# Find the position from where ` `    ``# the characters have to be reversed ` `    ``n ``=` `(``len``(str1) ``-` `x) ``/``/` `2` ` `  `    ``# Print the first n characters ` `    ``for` `i ``in` `range``(n): ` `        ``print``(str1[i], end``=``"") ` ` `  `    ``# Print the middle x characters in reverse ` `    ``for` `i ``in` `range``(n ``+` `x ``-` `1``, n ``-` `1``, ``-``1``): ` `        ``print``(str1[i], end``=``"") ` ` `  `    ``# Print the last n characters ` `    ``for` `i ``in` `range``(n ``+` `x, ``len``(str1)): ` `        ``print``(str1[i], end``=``"") ` ` `  ` `  `# Driver code ` `str1 ``=` `"geeksforgeeks"` `x ``=` `3` `reverse(str1, x) ` ` `  `# This code is contributed by mohit kumar 29. `

## C#

 `// C# implementation of the above approach  ` `using` `System; ` ` `  `class` `GFG ` `{ ` ` `  `// Function to reverse the middle x  ` `// characters in a string  ` `static` `void` `reverse(``string` `str, ``int` `x)  ` `{  ` `    ``// Find the position from where  ` `    ``// the characters have to be reversed  ` `    ``int` `n = (str.Length - x) / 2;  ` ` `  `    ``// Print the first n characters  ` `    ``for` `(``int` `i = 0; i < n; i++)  ` `        ``Console.Write(str[i]);  ` ` `  `    ``// Print the middle x characters in reverse  ` `    ``for` `(``int` `i = n + x - 1; i >= n; i--)  ` `        ``Console.Write(str[i]);  ` ` `  `    ``// Print the last n characters  ` `    ``for` `(``int` `i = n + x; i < str.Length; i++)  ` `        ``Console.Write(str[i]);  ` `}  ` ` `  `// Drived code ` `public` `static` `void` `Main() ` `{ ` `    ``string` `str = ``"geeksforgeeks"``;  ` `    ``int` `x = 3;  ` `    ``reverse(str, x);  ` `} ` `} ` ` `  `// This code is contributed ` `// by Akanksha Rai `

## PHP

 `= ``\$n``; ``\$i``--) ` `        ``echo``(``\$str``[``\$i``]); ` ` `  `    ``// Print the last n characters ` `    ``for` `(``\$i``= ``\$n` `+ ``\$x``; ``\$i` `< ``strlen``(``\$str``); ``\$i``++) ` `        ``echo` `\$str``[``\$i``]; ` `} ` ` `  `// Driver code ` `\$str` `= ``"geeksforgeeks"``; ` `\$x` `= 3; ` `reverse(``\$str``, ``\$x``); ` ` `  `// This code is contributed by Shivi_Aggarwal  ` `?> `

Output:

```geeksrofgeeks
```

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.