Related Articles
Reverse the given string in the range [L, R]
• Last Updated : 18 Sep, 2019

Given a string str, and two integers L and R, the task is to reverse the string in the range [L, R] i.e. str[L…R].

Examples:

Input: str = “geeksforgeeks”, L = 5, R = 7
Output: geeksrofgeeks
Reverse the characters in the range str[5…7] = “geeksforgeeks”
and the new string will be “geeksrofgeeks”

Input: str = “ijklmn”, L = 1, R = 2
Output: ikjlmn

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

Approach:

1. If the range is invalid i.e. either L < 0 or R ≥ len or L > R then print the original string.
2. If the range is valid then keep swapping the characters str[L] and str[R] while L < R and update L = L + 1 and R = R – 1 after every swap operation. Print the updated string in the end.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;`` ` `// Function to return the string after``// reversing characters in the range [L, R]``string reverse(string str, ``int` `len, ``int` `l, ``int` `r)``{`` ` `    ``// Invalid range``    ``if` `(l < 0 || r >= len || l > r)``        ``return` `str;`` ` `    ``// While there are characters to swap``    ``while` `(l < r) {`` ` `        ``// Swap(str[l], str[r])``        ``char` `c = str[l];``        ``str[l] = str[r];``        ``str[r] = c;`` ` `        ``l++;``        ``r--;``    ``}`` ` `    ``return` `str;``}`` ` `// Driver code``int` `main()``{``    ``string str = ``"geeksforgeeks"``;``    ``int` `len = str.length();``    ``int` `l = 5, r = 7;`` ` `    ``cout << reverse(str, len, l, r);`` ` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``import` `java.util.*;`` ` `class` `GFG``{``     ` `    ``// Function to return the string after``    ``// reversing characters in the range [L, R]``    ``static` `String reverse(``char``[] str, ``int` `len,``                               ``int` `l, ``int` `r)``    ``{`` ` `        ``// Invalid range``        ``if` `(l < ``0` `|| r >= len || l > r)``            ``return` `"Invalid range!"``;`` ` `        ``// While there are characters to swap``        ``while` `(l < r)``        ``{`` ` `            ``// Swap(str[l], str[r])``            ``char` `c = str[l];``            ``str[l] = str[r];``            ``str[r] = c;`` ` `            ``l++;``            ``r--;``        ``}``        ``String string = ``new` `String(str);``        ``return` `string;``    ``}`` ` `    ``// Driver code``    ``public` `static` `void` `main (String[] args) ``    ``{``        ``String str = ``"geeksforgeeks"``;``        ``int` `len = str.length();``        ``int` `l = ``5``, r = ``7``;`` ` `        ``System.out.println(reverse(str.toCharArray(), ``                                         ``len, l, r));``    ``}``}`` ` `// This code is contributed by Ashutosh450`

## Python3

 `# Python3 implementation of the approach `` ` `# Function to return the string after ``# reversing characters in the range [L, R] ``def` `reverse(string, length, l, r) :`` ` `    ``# Invalid range ``    ``if` `(l < ``0` `or` `r >``=` `length ``or` `l > r) :``        ``return` `string;``         ` `    ``string ``=` `list``(string)``     ` `    ``# While there are characters to swap ``    ``while` `(l < r) :`` ` `        ``# Swap(str[l], str[r]) ``        ``c ``=` `string[l]; ``        ``string[l] ``=` `string[r]; ``        ``string[r] ``=` `c; `` ` `        ``l ``+``=` `1``; ``        ``r ``-``=` `1``; `` ` `    ``return` `"".join(string); `` ` `# Driver code ``if` `__name__ ``=``=` `"__main__"` `: `` ` `    ``string ``=` `"geeksforgeeks"``; ``    ``length ``=` `len``(string); ``    ``l ``=` `5``; r ``=` `7``; `` ` `    ``print``(reverse(string, length, l, r)); `` ` `# This code is contributed by AnkitRai01`

## C#

 `// C# implementation of the approach``using` `System;``     ` `class` `GFG``{``     ` `    ``// Function to return the string after``    ``// reversing characters in the range [L, R]``    ``static` `String reverse(``char``[] str, ``int` `len,``                          ``int` `l, ``int` `r)``    ``{`` ` `        ``// Invalid range``        ``if` `(l < 0 || r >= len || l > r)``            ``return` `"Invalid range!"``;`` ` `        ``// While there are characters to swap``        ``while` `(l < r)``        ``{`` ` `            ``// Swap(str[l], str[r])``            ``char` `c = str[l];``            ``str[l] = str[r];``            ``str[r] = c;`` ` `            ``l++;``            ``r--;``        ``}``        ``return` `String.Join(``""``,str);``    ``}`` ` `    ``// Driver code``    ``public` `static` `void` `Main (String[] args) ``    ``{``        ``String str = ``"geeksforgeeks"``;``        ``int` `len = str.Length;``        ``int` `l = 5, r = 7;`` ` `        ``Console.WriteLine(reverse(str.ToCharArray(), ``                                        ``len, l, r));``    ``}``}`` ` `// This code is contributed by 29AjayKumar`
Output:
```geeksrofgeeks
```

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