Home >Backend Development >C++ >encrypted string

encrypted string

王林
王林forward
2023-09-08 10:37:021180browse

encrypted string

Encryption is a technique that changes data by using certain techniques or certain steps so that it changes to another kind of information or from which the previous information cannot be directly collected. For encryption, we have to follow certain steps that are fixed for the specific encryption type.

In this question we will get a string and we have to encrypt it by following the given steps -

  • First we have to get all substrings that contain the same character and replace that substring with a single character followed by the length of the substring.

  • Now, change the length to a hexadecimal value and all characters of the hexadecimal value must be changed to lowercase.

  • Finally, reverse the entire string.

Example

Input 1: string str = "aabbbcccc"
Output: "4c3b2a"

illustrate

First, we will get all the substrings that contain the same number of characters and replace them with the frequency of the characters, which will give us the string "a2b3c4". Now we change the length to a hexadecimal value, but 2, 3 and 4 have the same value in hexadecimal form. Finally we reverse the string and the end result will be 4c3b2a.

Input2: string str = "oooooooooooo"
Output: "co"

illustrate

First, we convert the string into the frequency string "o12". Now, the hexadecimal value of 12 is C, we change it to lowercase i.e. c and replace it into the string and then reverse the string.

method

From the above example, we have an idea about the problem, now let us enter the implementation part -

  • In implementation, first, we will implement a function that takes input as an integer and returns a string as the return value.

  • This function will be used to convert the given integer to a hexadecimal value, with one modification, using lowercase English letters instead of uppercase English characters.

  • We will define another function in which we will use a for loop to iterate through the string and then for the substring of the same character we will use a while loop until we find a character that is equal to the current character .

  • We will calculate the frequency and change it to a hexadecimal value and add it to the string with the current index character.

  • Finally, we reverse the string and return it to the main function for printing.

Example

#include <bits/stdc++.h>
using namespace std;
// function to convert the integer to hexadecimal values 
string convertToHexa(int val){
   string res = ""; // string to store the result     
   while(val != 0){
      int cur = val %16; // getting the mode of the current value         
      if(cur < 10){
         res += '0' + cur;
       }
      else{
         res += 87 + cur; // adding 87 to get the lowercase letters 
      }
      val /= 16; // updating the current value 
   }
   return res;
}

// function to encrypt the string 
string encrypt(string str){
   int len = str.length(); // getting the length of the string 
   int freq = 0; // variable to store the frequency 
   string ans = ""; // string to store the answer    
   
   // traversing over the string 
   for(int i=0; i<len; i++){
      int j = i; // variable to keep track the substring with the same character
      while(j < len && str[j] == str[i]){
         j++;
      }
      freq = j-i;
      ans += str[i];
      
      // calling the function to get the hexadecimal value 
      string hexaValue = convertToHexa(freq);
      ans += hexaValue;        
      i = j-1;
   } 
   
   // reversing the string 
   reverse(ans.begin(), ans.end());
   return ans;
}

// main function 
int main(){
   string str = "aaabbbbccccccccccc"; // given string  
   
   // calling the function to get the encrypted string
   cout<<"The given string after the encryption is: "<<encrypt(str)<<endl;
   return 0;
}

Output

The given string after the encryption is: bc4b3a

Time and Space Complexity

The time complexity of the above code is O(N), where N is the size of the given string. It took us N time to iterate over the string, while reversing the string took less than N time.

The space complexity of the above code to store the final string is O(N), if we ignore this, no extra space will be used.

Notice

Encryption can be done in an infinite number of ways, and is only concerned with defining the rules to encrypt the keys. The main characteristic of encryption is that it must give the same result every time for the same input.

in conclusion

In this tutorial, we implemented a code that encrypts a given string according to rules. First, we have to get substrings containing elements of the same type and replace them with characters and their frequencies. Next, we change the frequency to a hexadecimal number and finally reverse the entire string. The time complexity of the above code is O(N).

The above is the detailed content of encrypted string. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete