Restaure la string original de la string cifrada dada mediante las operaciones dadas

Dada una string str y un entero positivo N , la tarea es invertir N caracteres y saltar N caracteres hasta el final de la string para generar el mensaje cifrado.

Ejemplos:

Entrada: str = “ihTs suohld ebeas!y”, K = 3 
Salida: ¡Esto debería ser fácil! 
Explicación: 
Invertir “ihT” -> “Thi” 
“s” sigue siendo el mismo 
“uoh” -> “hou”, y así sucesivamente.

Entrada: str = “!ysae eb dluohs sihT”, K = 30 
Salida: ¡Esto debería ser fácil! 
Explicación: 
dado que 30 es más grande que la longitud de la string dada (= 20), simplemente imprima el reverso de la string. 
 

Enfoque: siga los pasos a continuación para resolver el problema:

  • Recorre la string dada.
  • Incremente el iterador en 2 * N .
  • Invierte N caracteres paso a paso.

A continuación se muestra la implementación del enfoque anterior:

C++

// 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;
}

Python3

# 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
Producción: 

This should be easy!

 

Complejidad temporal: O(N) 
Espacio auxiliar: O(1)
 

Publicación traducida automáticamente

Artículo escrito por aryan_a y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *