Dada la string str que consiste solo en letras minúsculas y un número entero k , la tarea es reemplazar cada carácter de la string dada con un carácter cuyo valor ASCII sea k veces mayor que él. Si el valor ASCII excede ‘z’, comience a verificar desde ‘a’ de manera cíclica.
Ejemplos:
Entrada: str = “abc”, k = 2
Salida: el código
a se mueve 2 veces, lo que da como resultado el carácter c
b se mueve 2 veces, lo que da como resultado el carácter d
c se mueve 2 veces, lo que da como resultado el carácter e
Entrada: str = “abc”, k = 28
Salida : el código
a se mueve 25 veces, se alcanza z. Entonces el 26º carácter será a, el 27º b y el 28º c.
b se mueve 24 veces, se alcanza z. 28-th es d.
b se mueve 23 veces, se alcanza z. 28-th es e.
Enfoque : iterar para cada carácter de la string y realizar los siguientes pasos para cada carácter:
- Agregue k al valor ASCII del carácter str[i].
- Si excede 122, entonces realice una operación de módulo de k con 26 para reducir el número de pasos, ya que 26 es el número máximo de cambios que se pueden realizar en una rotación.
- Para encontrar el carácter, agregue k a 96. Por lo tanto, el carácter con valor ASCII k+96 será un carácter nuevo.
Repita los pasos anteriores para cada carácter de la string dada.
A continuación se muestra la implementación del enfoque anterior:
C++
// CPP program to move every character // K times ahead in a given string #include <bits/stdc++.h> using namespace std; // Function to move string character void encode(string s,int k){ // changed string string newS; // iterate for every characters for(int i=0; i<s.length(); ++i) { // ASCII value int val = int(s[i]); // store the duplicate int dup = k; // if k-th ahead character exceed 'z' if(val + k > 122){ k -= (122-val); k = k % 26; newS += char(96 + k); } else newS += char(val + k); k = dup; } // print the new string cout<<newS; } // driver code int main(){ string str = "abc"; int k = 28; // function call encode(str, k); return 0; } // This code is contributed by Sanjit_Prasad
Java
// Java program to move every character // K times ahead in a given string class GFG { // Function to move string character static void encode(String s, int k) { // changed string String newS = ""; // iterate for every characters for (int i = 0; i < s.length(); ++i) { // ASCII value int val = s.charAt(i); // store the duplicate int dup = k; // if k-th ahead character exceed 'z' if (val + k > 122) { k -= (122 - val); k = k % 26; newS += (char)(96 + k); } else { newS += (char)(val + k); } k = dup; } // print the new string System.out.println(newS); } // Driver Code public static void main(String[] args) { String str = "abc"; int k = 28; // function call encode(str, k); } } // This code is contributed by Rajput-JI
Python3
# Python program to move every character # K times ahead in a given string # Function to move string character def encode(s, k): # changed string newS = "" # iterate for every characters for i in range(len(s)): # ASCII value val = ord(s[i]) # store the duplicate dup = k # if k-th ahead character exceed 'z' if val + k>122: k -= (122-val) k = k % 26 newS += chr(96 + k) else: newS += chr(val + k) k = dup # print the new string print (newS) # driver code str = "abc" k = 28 encode(str, k)
C#
// C# program to move every character // K times ahead in a given string using System; public class GFG { // Function to move string character static void encode(String s, int k) { // changed string String newS = ""; // iterate for every characters for (int i = 0; i < s.Length; ++i) { // ASCII value int val = s[i]; // store the duplicate int dup = k; // if k-th ahead character exceed 'z' if (val + k > 122) { k -= (122 - val); k = k % 26; newS += (char)(96 + k); } else { newS += (char)(96 + k); } k = dup; } // print the new string Console.Write(newS); } // Driver Code public static void Main() { String str = "abc"; int k = 28; // function call encode(str, k); } } // This code is contributed by Rajput-JI
PHP
<?php // PHP program to move every character // K times ahead in a given string // Function to move string character function encode($s, $k) { // changed string $newS = ""; // iterate for every characters for($i = 0; $i < strlen($s); ++$i) { // ASCII value $val = ord($s[$i]); // store the duplicate $dup = $k; // if k-th ahead character exceed 'z' if($val + $k > 122) { $k -= (122 - $val); $k = $k % 26; $newS = $newS.chr(96 + $k); } else $newS = $newS.chr($val + $k); $k = $dup; } // print the new string echo $newS; } // Driver code $str = "abc"; $k = 28; // function call encode($str, $k); // This code is contributed by ita_c ?>
Javascript
<script> // Javascript program to move every character // K times ahead in a given string // Function to move string character function encode(s,k) { // changed string let newS = ""; // iterate for every characters for (let i = 0; i < s.length; ++i) { // ASCII value let val = s[i].charCodeAt(0); // store the duplicate let dup = k; // if k-th ahead character exceed 'z' if (val + k > 122) { k -= (122 - val); k = k % 26; newS += String.fromCharCode(96 + k); } else { newS += String.fromCharCode(val + k); } k = dup; } // print the new string document.write(newS); } // Driver Code let str = "abc"; let k = 28; // function call encode(str, k); // This code is contributed by rag2127 </script>
Producción:
code
Complejidad de tiempo: O (N), ya que estamos usando un bucle para atravesar N veces, por lo que nos costará O (N) tiempo, donde N es la longitud de la string.
Espacio Auxiliar: O(N)