Reverse the given string in the range [L, R]
Last Updated :
19 Oct, 2022
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++
#include <bits/stdc++.h>
using namespace std;
string reverse(string str, int len, int l, int r)
{
if (l < 0 || r >= len || l > r)
return str;
while (l < r) {
char c = str[l];
str[l] = str[r];
str[r] = c;
l++;
r--;
}
return str;
}
int main()
{
string str = "geeksforgeeks" ;
int len = str.length();
int l = 5, r = 7;
cout << reverse(str, len, l, r);
return 0;
}
|
Java
import java.util.*;
class GFG
{
static String reverse( char [] str, int len,
int l, int r)
{
if (l < 0 || r >= len || l > r)
return "Invalid range!" ;
while (l < r)
{
char c = str[l];
str[l] = str[r];
str[r] = c;
l++;
r--;
}
String string = new String(str);
return string;
}
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));
}
}
|
Python3
def reverse(string, length, l, r) :
if (l < 0 or r > = length or l > r) :
return string;
string = list (string)
while (l < r) :
c = string[l];
string[l] = string[r];
string[r] = c;
l + = 1 ;
r - = 1 ;
return "".join(string);
if __name__ = = "__main__" :
string = "geeksforgeeks" ;
length = len (string);
l = 5 ; r = 7 ;
print (reverse(string, length, l, r));
|
C#
using System;
class GFG
{
static String reverse( char [] str, int len,
int l, int r)
{
if (l < 0 || r >= len || l > r)
return "Invalid range!" ;
while (l < r)
{
char c = str[l];
str[l] = str[r];
str[r] = c;
l++;
r--;
}
return String.Join( "" ,str);
}
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));
}
}
|
Javascript
<script>
function reverse(str, len, l, r)
{
if (l < 0 || r >= len || l > r)
return "Invalid range!" ;
while (l < 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));
</script>
|
Time complexity: O(N), where N = (r – l)/2
Auxiliary space: O(1)
Share your thoughts in the comments
Please Login to comment...