Modifique la string aumentando cada carácter por su distancia desde el final de la palabra

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: 

  1. Primero, tokenice la string S dada en palabras individuales.
  2. Itere sobre las palabras y para cada carácter de una palabra, agregue su posición desde el final.
  3. Luego, agregue la palabra resultante a la string final, digamos res .
  4. 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
Producción: 

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

Deja una respuesta

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