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
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 = "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 |
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 = "geeksforgeeks" ;
let len = str.length;
let l = 5, r = 7;
document.write(reverse(str.split( '' ), len, l, r));
// This code is contributed by divyeshrabadiya07. </script> |
Output:
geeksrofgeeks
Time complexity: O(N), where N = (r – l)/2
Auxiliary space: O(1)