Given an encrypted string str and the encryption algorithm, the task is to decrypt the string. The encryption algorithm is as follows:
The 1st character of the string will be repeated once in the encrypted string, the 2nd character will be repeated twice, …, nth character will be repeated n times. For example, the string “abcd” will be encrypted as “abbcccdddd”.
Examples:
Input: str = “geeeeekkkksssss”
Output: neveropenInput: str = “abbcccdddd”
Output: abcd
Approach: Initialize i = 0 and print str[i].
Update i = i + 1 and print str[i], then update i = i + 2 and print str[i] and so on while i < length(str).
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 decrypted string string decryptString(string str, int n) { // Initial jump will be 1 int i = 0, jump = 1; string decryptedStr = "" ; while (i < n) { decryptedStr += str[i]; i += jump; // Increment jump by 1 with every character jump++; } return decryptedStr; } // Driver code int main() { string str = "geeeeekkkksssss" ; int n = str.length(); cout << decryptString(str, n); return 0; } |
Java
// Java implementation of the approach class GFG { // Function to return the decrypted string static String decryptString(String str, int n) { // Initial jump will be 1 int i = 0 , jump = 1 ; String decryptedStr = "" ; while (i < n) { decryptedStr += str.charAt(i); i += jump; // Increment jump by 1 with every character jump++; } return decryptedStr; } // Driver code public static void main(String[] args) { String str = "geeeeekkkksssss" ; int n = str.length(); System.out.println(decryptString(str, n)); } } // This code is contributed by Code_Mech |
Python3
# Python 3 implementation of the approach # Function to return the decrypted string def decryptString( str , n): # Initial jump will be 1 i = 0 jump = 1 decryptedStr = "" while (i < n): decryptedStr + = str [i]; i + = jump # Increment jump by 1 with # every character jump + = 1 return decryptedStr # Driver code if __name__ = = '__main__' : str = "geeeeekkkksssss" n = len ( str ) print (decryptString( str , n)) # This code is contributed by # Surendra_Gangwar |
C#
// C# implementation of the approach using System; class GFG { // Function to return the decrypted string static string decryptString( string str, int n) { // Initial jump will be 1 int i = 0, jump = 1; string decryptedStr = "" ; while (i < n) { decryptedStr += str[i]; i += jump; // Increment jump by 1 with every character jump++; } return decryptedStr; } // Driver code public static void Main() { string str = "geeeeekkkksssss" ; int n = str.Length; Console.Write(decryptString(str, n)); } } // This code is contributed by ita_c |
PHP
<?php // PHP implementation of the approach // Function to return the decrypted string function decryptString( $str , $n ) { // Initial jump will be 1 $i = 0 ; $jump = 1 ; $decryptedStr = "" ; while ( $i < $n ) { $decryptedStr .= $str [ $i ]; $i += $jump ; // Increment jump by 1 with // every character $jump ++; } return $decryptedStr ; } // Driver code $str = "geeeeekkkksssss" ; $n = strlen ( $str ); echo decryptString( $str , $n ); // This code is contributed by Ryuga ?> |
Javascript
<script> // Javascript implementation of the approach // Function to return the decrypted string function decryptString(str,n) { // Initial jump will be 1 let i = 0, jump = 1; let decryptedStr = "" ; while (i < n) { decryptedStr += str[i]; i += jump; // Increment jump by 1 with every character jump++; } return decryptedStr; } // Driver code let str = "geeeeekkkksssss" ; let n = str.length; document.write(decryptString(str, n)); // This code is contributed by rag2127 </script> |
neveropen
Time Complexity: O(?n), where n is the length of the given string.
Auxiliary Space: O(?n), where n is the length of the given string.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!