Codifique la string dada desplazando cada carácter hacia adelante con su valor alfabético

Dada la string str de tamaño N que consta de alfabetos ingleses en minúsculas, la tarea es codificar la string dada de la siguiente manera:

  • cambiar cada carácter de esa string a otro carácter
  • la distancia entre el carácter cambiado y el carácter actual es la misma que la distancia entre el carácter actual y ‘a’.
  • Además, suponga que la array del carácter forma un ciclo, es decir, después de ‘z’, el ciclo comienza de nuevo desde ‘a’.

Ejemplos:

Entrada: str = “geeksforgeeks”
Salida: “miiukkcimiiuk”
Explicación:
g cambió a m (la distancia entre g y a es 6, la distancia entre m y g es 6)
e cambió a i (la distancia entre e y a es 4, la distancia entre i & e es 4)
y lo mismo para otros personajes también.

Entrada: str = “ciclodelalfabeto”
Salida: “ewewickaweoacim”

 

Enfoque: Este problema se puede resolver siguiendo los siguientes pasos:

  • Ejecute un bucle de i=0 a i<N y recorra cada carácter de la string. Para cada carácter str[i] :
    • Encuentre la distancia entre str[i] y ‘a’, es decir, dist=str[i]-‘a’ .
    • Ahora, si (dist+(str[i]-‘a’)) > 26 , esto significa que se excede ‘z’, entonces
  • De lo contrario, cambie str[i] a str[i]+dist .
  • Imprime la string como la respuesta a este problema.

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

C++

// C++ code for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to change every character
// of the string to another character
void changeString(string str)
{
    for (auto& x : str) {
        int dist = x - 'a';
 
        // If 'z' is exceeded
        if (dist + (x - 'a') > 26) {
            dist = (dist + (x - 'a')) % 26;
            x = 'a' + dist;
        }
 
        // If 'z' is not exceeded
        else {
            x = x + dist;
        }
    }
    cout << str << endl;
}
 
// Driver Code
int main()
{
    string str = "cycleofalphabet";
    changeString(str);
    return 0;
}

Java

// Jsvs code for the above approach
import java.util.*;
 
class GFG {
 
  // Function to change every character
  // of the string to another character
  static void changeString(String str)
  {
    char[] ch = str.toCharArray();
    for (int i = 0; i < str.length(); i++) {
      int dist = ch[i] - 'a';
 
      // If 'z' is exceeded
      if (dist + (ch[i] - 'a') > 26) {
        dist = (dist + (ch[i] - 'a')) % 26;
        ch[i] = (char)('a' + dist);
      }
 
      // If 'z' is not exceeded
      else {
        ch[i] = (char)(ch[i] + dist);
      }
    }
 
    String s = new String(ch);
    System.out.println(s);
  }
 
  // Driver Code
  public static void main(String[] args)
  {
    String str = "cycleofalphabet";
    changeString(str);
  }
}
 
// This code is contributed by ukasp.

Python3

# Python code for the above approach
 
# Function to change every character
# of the string to another character
def changeString(str):
    str = list(str)
    for x in range(len(str)):
        dist = ord(str[x]) - ord('a')
 
        # If 'z' is exceeded
        if (dist + (ord(str[x]) - ord('a')) > 26):
            dist = (dist + (ord(str[x]) - ord('a'))) % 26;
            str[x] = chr(ord('a') + dist);
         
 
        # If 'z' is not exceeded
        else:
            str[x] = chr(ord(str[x]) + dist);
         
    str = "".join(str)
    print(str)
 
# Driver Code
 
str = "cycleofalphabet";
changeString(str);
 
# This code is contributed by Saurabh Jaiswal

C#

// C# code for the above approach
using System;
using System.Collections;
 
class GFG
{
 
  // Function to change every character
  // of the string to another character
  static void changeString(string str)
  {
    char[] ch = str.ToCharArray(); 
    for(int i = 0; i < str.Length; i++) {
      int dist = ch[i] - 'a';
 
      // If 'z' is exceeded
      if (dist + (ch[i] - 'a') > 26) {
        dist = (dist + (ch[i] - 'a')) % 26;
        ch[i] = (char)('a' + dist);
      }
 
      // If 'z' is not exceeded
      else {
        ch[i] = (char)(ch[i] + dist);
      }
    }
 
    string s = new string(ch);
    Console.WriteLine(s);
  }
 
  // Driver Code
  public static void Main()
  {
    string str = "cycleofalphabet";
    changeString(str);
  }
}
 
// This code is contributed by Samim Hossain Mondal.

Javascript

<script>
      // JavaScript code for the above approach
 
      // Function to change every character
      // of the string to another character
      function changeString(str) {
          str = str.split('')
          for (let x = 0; x < str.length; x++) {
              let dist = str[x].charCodeAt(0) - 'a'.charCodeAt(0);
 
              // If 'z' is exceeded
              if (dist + (str[x].charCodeAt(0) - 'a'.charCodeAt(0)) > 26) {
                  dist = (dist + (str[x].charCodeAt(0) - 'a'.charCodeAt(0))) % 26;
                  str[x] = String.fromCharCode('a'.charCodeAt(0) + dist);
              }
 
              // If 'z' is not exceeded
              else {
                  str[x] = String.fromCharCode(str[x].charCodeAt(0) + dist);
              }
          }
          str = str.join('')
          document.write(str + "<br>")
      }
 
      // Driver Code
 
      let str = "cycleofalphabet";
      changeString(str);
 
     // This code is contributed by Potta Lokesh
  </script>
Producción

ewewickaweoacim

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

Publicación traducida automáticamente

Artículo escrito por harshdeepmahajan88 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 *