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: geeksInput: 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++ 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 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 |
# 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# 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 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 ?> |
<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> |
geeks
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.