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>
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