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 = “neveropen”, L = 5, R = 7
Output: neveropenrofneveropen
Reverse the characters in the range str[5…7] = “neveropenforneveropen”
and the new string will be “neveropenrofneveropen”Input: str = “ijklmn”, L = 1, R = 2
Output: ikjlmn
Approach:
- If the range is invalid i.e. either L < 0 or R ? len or L > R then print the original string.
- 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 <bits/stdc++.h> 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 = "neveropen" ; 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 = "neveropen" ; 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 = "neveropen" ; 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 = "neveropen" ; int len = str.Length; int l = 5, r = 7; Console.WriteLine(reverse(str.ToCharArray(), len, l, r)); } } // This code is contributed by 29AjayKumar |
Javascript
<script> // Javascript implementation of the approach // Function to return the string after // reversing characters in the range [L, R] function reverse(str, len, l, 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]) let c = str[l]; str[l] = str[r]; str[r] = c; l++; r--; } return str.join( "" ); } let str = "neveropen" ; let len = str.length; let l = 5, r = 7; document.write(reverse(str.split( '' ), len, l, r)); // This code is contributed by divyeshrabadiya07. </script> |
neveropenrofneveropen
Time complexity: O(N), where N = (r – l)/2
Auxiliary space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!