Given a string str and a positive integer N, the task is to reverse N characters and skip N characters until the end of the string to generate the encrypted message.
Examples:
Input: str = “ihTs suohld ebeas!y”, K = 3
Output: This should be easy!
Explanation:
Reverse “ihT” -> “Thi”
“s” remains the same
“uoh” -> “hou”, and so on.Input: str = “!ysae eb dluohs sihT”, K = 30
Output: This should be easy!
Explanation:
Since 30 is larger than the length of the given string(= 20), just print the reverse of the string.
Approach: Follow the steps below to solve the problem:
- Traverse the given string.
- Increment the iterator by 2 * N.
- Reverse N characters step by step.
Below is the implementation of the above approach:
// C++ Program to implement // the above approach #include <bits/stdc++.h> using namespace std;
// Function to decrypt and print the // original strings int decryptString(string s, unsigned int N)
{ for (unsigned int i = 0; i < s.size();
i += 2 * N) {
auto end = s.begin() + i + N;
// If length is exceeded
if (i + N > s.size())
end = s.end();
// Reverse the string
reverse(s.begin() + i, end);
}
cout << s << endl;
} // Driver Code int main()
{ string s = "ihTs suohld ebeas!y" ;
unsigned int N = 3;
decryptString(s, N);
return 0;
} |
// Java Program to implement // the above approach import java.io.*;
class GFG {
// utility function to reverse the string from start to end -1 index
static String reverse_(String s , int start , int end)
{
String str= "" ;
for ( int i = 0 ;i<start;i++)
str += s.charAt(i);
for ( int i = end- 1 ;i>=start;i--)
str += s.charAt(i);
for ( int i = end; i<s.length();i++)
str += s.charAt(i);
return str;
}
// Function to decrypt and print the
// original strings
static void decryptString(String s, int N)
{
for ( int i = 0 ; i < s.length(); i += 2 *N) {
int end = i + N;
// If length is exceeded
if (i + N > s.length())
end = s.length();
// Reverse the string
s = reverse_(s, i, end);
}
System.out.println(s);
}
public static void main(String[] args)
{
String s = "ihTs suohld ebeas!y" ;
int N = 3 ;
decryptString(s, N);
}
} // This code is contributed by AKSHAY TRIPATHI |
using System;
class GFG
{ // utility function to reverse the string from start to end -1 index
static string Reverse_( string s, int start, int end)
{
string str = "" ;
for ( int i = 0; i < start; i++)
str += s[i];
for ( int i = end - 1; i >= start; i--)
str += s[i];
for ( int i = end; i < s.Length; i++)
str += s[i];
return str;
}
// Function to decrypt and print the
// original strings
static void DecryptString( string s, int N)
{
for ( int i = 0; i < s.Length; i += 2 * N)
{
int end = i + N;
// If length is exceeded
if (i + N > s.Length)
end = s.Length;
// Reverse the string
s = Reverse_(s, i, end);
}
Console.WriteLine(s);
}
public static void Main( string [] args)
{
string s = "ihTs suohld ebeas!y" ;
int N = 3;
DecryptString(s, N);
}
} |
# Python3 program to implement # the above approach # Function to decrypt and print the # original strings def decryptString(s, N):
for i in range ( 0 , len (s), 2 * N):
if (i + N < len (s)):
end = s[i + N]
# If length is exceeded
if (i + N > len (s)):
end = s[ - 1 ]
# Reverse the string
if (i = = 0 ):
s = s[i + N - 1 :: - 1 ] + s[i + N:]
else :
s = s[:i] + s[i + N - 1 :i - 1 : - 1 ] + s[i + N:]
print (s)
# Driver Code if __name__ = = "__main__" :
s = "ihTs suohld ebeas!y"
N = 3
decryptString(s, N)
# This code is contributed by ukasp |
// JavascriptProgram to implement // the above approach //utility function to reverse the string from start to end -1 index function reverse_(s , start , end)
{ end -= 1;
while (start<end)
{
var temp = s[start];
s[start] = s[end];
s[end] = temp;
start++;
end--;
}
return s;
} // Function to decrypt and print the // original strings function decryptString( s, N)
{ for ( var i = 0; i < s.length;i += 2 * N) {
var end = i + N;
// If length is exceeded
if (i + N > s.length)
end = s.length;
// Reverse the string
s = reverse_(s, i, end);
}
console.log(s);
} // Driver Code var s = "ihTs suohld ebeas!y" ;
var N = 3;
decryptString(s, N);
// This code is contributed by Abhijeet Kumar(abhijeet19403)
|
This should be easy!
Time Complexity: O(N)
Auxiliary Space: O(1)