Given a string, the given string is an encrypted word, the task is to decrypt the given string to get the original word. Examples:
Input: str = “abcd”
Output: bdee
Explanation:
a -> a + 1 -> b
b -> b + 2 -> d
c -> c + 2 -> e
d -> d + 1 -> eInput: str = “xyz”
Output: yaa
Explanation:
x -> x + 1 -> y
y -> y + 2 -> a
z -> z + 1 -> a
Approach:
- Let the length of the string be n.
- then the encrypted string will be:
- Print the string after finding the scrypted word.
Below is the implementation of the above approach:
C++
// C++ program to implement // the above approach #include <bits/stdc++.h> using namespace std; // Function to find the encrypted string void findWord(string c, int n) { int co = 0, i; // to store the encrypted string string s(n, ' ' ); for (i = 0; i < n; i++) { if (i < n / 2) co++; else co = n - i; // after 'z', it should go to a. if (c[i] + co <= 122) s[i] = ( char )(( int )c[i] + co); else s[i] = ( char )(( int )c[i] + co - 26); } cout << s; } // Driver code int main() { string s = "abcd" ; findWord(s, s.length()); return 0; } |
Java
// Java program to implement the above approach import java.util.*; import java.io.*; class GFG { // Static function declared to find // the encrypted string public static void findWord(String c, int n) { int co = 0 , i; // Character array to store //the encrypted string char s[] = new char [n]; for (i = 0 ; i < n ; i++) { if (i < n / 2 ) co++; else co = n - i; // after 'z', it should go to a. if ((c.charAt(i) + co) <= 122 ) s[i] = ( char )(( int )c.charAt(i) + co); else s[i] = ( char )(( int )c.charAt(i) + co - 26 ); } // storing the character array in the string. String str = Arrays.toString(s); System.out.println(str); } // Driver code public static void main(String args[]) { String s = "abcd" ; findWord(s, s.length()); } } // This code is contributed by Animesh_Gupta |
Python3
# Python3 program to implement # the above approach # Function to find the encrypted string def findWord(c, n): co = 0 # to store the encrypted string s = [ 0 ] * n for i in range (n): if (i < n / 2 ): co + = 1 else : co = n - i # after 'z', it should go to a. if ( ord (c[i]) + co < = 122 ): s[i] = chr ( ord (c[i]) + co) else : s[i] = chr ( ord (c[i]) + co - 26 ) print ( * s, sep = "") # Driver code s = "abcd" findWord(s, len (s)) # This code is contributed by SHUBHAMSINGH10 |
C#
// C# program to implement the above approach using System; class GFG { // Static function declared to find // the encrypted string public static void findWord(String c, int n) { int co = 0, i; // Character array to store // the encrypted string char []s = new char [n]; for (i = 0; i < n ; i++) { if (i < n / 2) co++; else co = n - i; // after 'z', it should go to a. if ((c[i] + co) <= 122) s[i] = ( char )(( int )c[i] + co); else s[i] = ( char )(( int )c[i] + co - 26); } // storing the character array in the string. String str = String.Join( "" ,s); Console.WriteLine(str); } // Driver code public static void Main(String []args) { String s = "abcd" ; findWord(s, s.Length); } } // This code is contributed by PrinciRaj1992 |
Javascript
// Function to find the encrypted string function findWord(c, n) { let co = 0, i; // to store the encrypted string let s = new Array(n).fill( ' ' ); for (i = 0; i < n; i++) { if (i < n / 2) co++; else co = n - i; // after 'z', it should go to a. if (c.charCodeAt(i) + co <= 122) s[i] = String.fromCharCode(c.charCodeAt(i) + co); else s[i] = String.fromCharCode(c.charCodeAt(i) + co - 26); } console.log(s.join( '' )); } // Driver code let s = "abcd" ; findWord(s, s.length); |
bdee
Time Complexity: O(N)
Auxiliary Space: O(N), The extra space is used to store the result.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!