Dada una string S , la tarea es modificar la string dada reemplazando cada carácter S[i] por un nuevo carácter cuyo valor es ( S[i] + su posición desde el final de la palabra )
Ejemplos:
Entrada: S = “acm fkz”
Salida: “cdm hlz”
Explicación:
Hay 2 palabras en la string dada {“acm”, “fkz”}
Para “acm”:
a se convierte en ‘a’ + 2 = ‘c’
c se convierte en ‘c’ + 1 = ‘d’
m se convierte en ‘m’ + 0 = ‘m’
“acm” se convierte en “cdm”.
Del mismo modo, «fkz» se convierte en «hlz».
Por lo tanto, la respuesta requerida es «cdm hlz»Entrada: «geeks for geeks»
Salida: «khgls hpr khgls»
Enfoque: La idea es dividir la string dada en palabras y modificar cada palabra individualmente. A continuación se muestran los pasos:
- Primero, tokenice la string S dada en palabras individuales.
- Itere sobre las palabras y para cada carácter de una palabra, agregue su posición desde el final.
- Luego, agregue la palabra resultante a la string final, digamos res .
- Siga repitiendo los dos pasos anteriores hasta que se transforme cada palabra de la string.
A continuación se muestra el programa para el enfoque anterior:
C++
// C++ implementation of // the above approach #include <bits/stdc++.h> using namespace std; // Function to transform and return // the transformed word string util(string sub) { int n = sub.length(); int i = 0; // Stores resulting word string ret = ""; // Iterate over the word while (i < n) { // Add the position // value to the letter int t = (sub[i] - 'a') + n - 1 - i; // Convert it back to character char ch = (char)(t % 26 + 97); // Add it to the string ret = ret + ch; i++; } return ret; } // Function to transform the // given string void manipulate(string s) { // Size of string int n = s.length(); int i = 0, j = 0; // Stores resultant string string res = ""; // Iterate over given string while (i < n) { // End of word is reached if (s[i] == ' ') { // Append the word res += util(s.substr(j, i)); res = res + " "; j = i + 1; i = j + 1; } else { i++; } } // For the last word res = res + util(s.substr(j, i)); cout << res << endl; } // Driver code int main() { // Given string string s = "acm fkz"; // Function call manipulate(s); return 0; } // This code is contributed by divyeshrabadiya07
Java
// Java implementation of // the above approach import java.util.*; import java.lang.*; import java.io.*; class GFG { // Function to transform the given string public static void manipulate(String s) { // Size of string int n = s.length(); int i = 0, j = 0; // Stores resultant string String res = ""; // Iterate over given string while (i < n) { // End of word is reached if (s.charAt(i) == ' ') { // Append the word res += util(s.substring(j, i)); res = res + " "; j = i + 1; i = j + 1; } else { i++; } } // For the last word res = res + util(s.substring(j, i)); System.out.println(res); } // Function to transform and return // the transformed word public static String util(String sub) { int n = sub.length(); int i = 0; // Stores resulting word String ret = ""; // Iterate over the word while (i < n) { // Add the position // value to the letter int t = (sub.charAt(i) - 'a') + n - 1 - i; // Convert it back to character char ch = (char)(t % 26 + 97); // Add it to the string ret = ret + String.valueOf(ch); i++; } return ret; } // Driver Code public static void main(String[] args) { // Given string String s = "acm fkz"; // Function Call manipulate(s); } }
Python3
# Python3 implementation of # the above approach # Function to transform and return # the transformed word def util(sub): n = len(sub) i = 0 # Stores resulting word ret = "" # Iterate over the word while i < n: # Add the position # value to the letter t = (ord(sub[i]) - 97) + n - 1 - i # Convert it back to character ch = chr(t % 26 + 97) # Add it to the string ret = ret + ch i = i + 1 return ret # Function to transform the # given string def manipulate(s): # Size of string n = len(s) i = 0 j = 0 # Stores resultant string res = "" # Iterate over given string while i < n: # End of word is reached if s[i] == ' ': # print(s[j:j+i]) # Append the word res += util(s[j : j + i]) res = res + " " j = i + 1 i = j + 1 else: i = i + 1 # For the last word res = res + util(s[j : j + i]) print(res) # Driver code if __name__ == "__main__": # Given string s = "acm fkz" # Function call manipulate(s) # This code is contributed by akhilsaini
C#
// C# implementation of // the above approach using System; class GFG{ // Function to transform the given string public static void manipulate(String s) { // Size of string int n = s.Length; int i = 0, j = 0; // Stores resultant string String res = ""; // Iterate over given string while (i < n) { // End of word is reached if (s[i] == ' ') { // Append the word res += util(s.Substring(j, i - j)); res = res + " "; j = i + 1; i = j + 1; } else { i++; } } // For the last word res = res + util(s.Substring(j, i - j)); Console.WriteLine(res); } // Function to transform and return // the transformed word public static String util(String sub) { int n = sub.Length; int i = 0; // Stores resulting word String ret = ""; // Iterate over the word while (i < n) { // Add the position // value to the letter int t = (sub[i] - 'a') + n - 1 - i; // Convert it back to character char ch = (char)(t % 26 + 97); // Add it to the string ret = ret + String.Join("", ch); i++; } return ret; } // Driver Code public static void Main(String[] args) { // Given string String s = "acm fkz"; // Function Call manipulate(s); } } // This code is contributed by shikhasingrajput
cdm hlz
Complejidad temporal: O(N)
Espacio auxiliar: O(N)
Publicación traducida automáticamente
Artículo escrito por kunalsg18elec y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA