Modificar la string dada de modo que los índices pares e impares sean lexicográficamente más grandes y más pequeños

Dada una string S que consta de N alfabetos en minúsculas, la tarea es modificar la string dada reemplazando todos los caracteres con caracteres distintos al carácter actual, de modo que la string de sufijos formada a partir de índices pares e impares sea lexicográficamente más grande y más pequeña respectivamente entre todas las posibles. modificaciones de la string S .

Ejemplos:

Entrada: S = “giad”
Salida: azbz
Explicación:
Modificar la string dada S a “azbz”.
Ahora, los sufijos que comienzan con índices impares {zbz, z} son lexicográficamente los más grandes entre todos los posibles reemplazos de caracteres.
Y todos los sufijos que comienzan en índices pares {azbz, bz} son lexicográficamente los más pequeños entre todos los posibles reemplazos de caracteres.

Entrada: S = “ewdwnk”
Salida: azazaz

Enfoque: el problema dado se puede resolver utilizando el enfoque codicioso . La idea es reemplazar todos los caracteres de índices impares con el carácter ‘z’ y si el carácter ‘z’ está presente, reemplácelo con ‘y’ . Del mismo modo, reemplace todos los caracteres de índices pares con el carácter ‘a’ y, si el carácter ‘a’ está presente, reemplácelo con ‘b’ . Después de las modificaciones anteriores, imprima la string S como la string resultante formada.

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

C++

// C++ program for the above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to modify the given string
// satisfying the given criteria
string performOperation(string S, int N)
{
    // Traverse the string S
    for (int i = 0; i < N; i++) {
 
        // If i is even
        if (i % 2 == 0) {
 
            // If the S[i] is 'a', then
            // change S[i] to 'b'
            if (S[i] == 'a') {
                S[i] = 'b';
            }
 
            // Otherwise, change S[i]
            // to 'a'
            else {
                S[i] = 'a';
            }
        }
        else {
 
            // If S[i] is 'z', then
            // change S[i] to 'y'
            if (S[i] == 'z') {
 
                S[i] = 'y';
            }
 
            // Otherwise, change S[i]
            // to 'z'
            else {
 
                S[i] = 'z';
            }
        }
    }
 
    // Return the result
    return S;
}
 
// Driver Code
int main()
{
    string S = "giad";
    int N = S.size();
    cout << performOperation(S, N);
 
    return 0;
}

Java

// Java program for the above approach
import java.util.*;
class GFG{
 
// Function to modify the given String
// satisfying the given criteria
static String performOperation(char[] S, int N)
{
   
    // Traverse the String S
    for (int i = 0; i < N; i++) {
 
        // If i is even
        if (i % 2 == 0) {
 
            // If the S[i] is 'a', then
            // change S[i] to 'b'
            if (S[i] == 'a') {
                S[i] = 'b';
            }
 
            // Otherwise, change S[i]
            // to 'a'
            else {
                S[i] = 'a';
            }
        }
        else {
 
            // If S[i] is 'z', then
            // change S[i] to 'y'
            if (S[i] == 'z') {
 
                S[i] = 'y';
            }
 
            // Otherwise, change S[i]
            // to 'z'
            else {
 
                S[i] = 'z';
            }
        }
    }
 
    // Return the result
    return String.valueOf(S);
}
 
// Driver Code
public static void main(String[] args)
{
    String S = "giad";
    int N = S.length();
    System.out.print(performOperation(S.toCharArray(), N));
}
}
 
// This code is contributed by shikhasingrajput

Python3

# python program for the above approach
 
# Function to modify the given string
# satisfying the given criteria
def performOperation(S, N):
   
    # Traverse the string S
    # we cannot directly change string
    # because it is immutable
    # so change of list of char
    S = list(S)
    for i in range(0, N):
 
                # If i is even
        if (i % 2 == 0):
 
                        # If the S[i] is 'a', then
                        # change S[i] to 'b'
            if (S[i] == 'a'):
                S[i] = 'b'
 
                # Otherwise, change S[i]
                # to 'a'
            else:
                S[i] = 'a'
 
        else:
 
                        # If S[i] is 'z', then
                        # change S[i] to 'y'
            if (S[i] == 'z'):
                S[i] = 'y'
 
                # Otherwise, change S[i]
                # to 'z'
            else:
                S[i] = 'z'
 
    # Return the result
    # join the list of char
    return "".join(S)
 
# Driver Code
if __name__ == "__main__":
    S = "giad"
    N = len(S)
    print(performOperation(S, N))
     
    # This code is contributed by rakeshsahni

C#

// C# program for the above approach
using System;
using System.Collections.Generic;
 
class GFG{
 
// Function to modify the given string
// satisfying the given criteria
static string performOperation(string S, int N)
{
   
    // Traverse the string S
    for (int i = 0; i < N; i++) {
 
        // If i is even
        if (i % 2 == 0) {
 
            // If the S[i] is 'a', then
            // change S[i] to 'b'
            if (S[i] == 'a') {
                S = S.Substring(0, i) + 'b' + S.Substring(i + 1);
            }
 
            // Otherwise, change S[i]
            // to 'a'
            else {
                S = S.Substring(0, i) + 'a' + S.Substring(i + 1);
            }
        }
        else {
 
            // If S[i] is 'z', then
            // change S[i] to 'y'
            if (S[i] == 'z') {
                S = S.Substring(0, i) + 'y' + S.Substring(i + 1);
            }
 
            // Otherwise, change S[i]
            // to 'z'
            else {
               S = S.Substring(0, i) + 'z' + S.Substring(i + 1);
            }
        }
    }
 
    // Return the result
    return S;
}
 
// Driver Code
public static void Main()
{
    string S = "giad";
    int N = S.Length;
    Console.Write(performOperation(S, N));
}
}
 
// This code is contributed by ipg2016107.

Javascript

<script>
 
// JavaScript program for the above approach
// Function to modify the given string
// satisfying the given criteria
function performOperation(S, N)
{
 
    // Traverse the string S
    for (var i = 0; i < N; i++) {
 
        // If i is even
        if (i % 2 == 0) {
 
            // If the S[i] is 'a', then
            // change S[i] to 'b'
            if (S.charAt(i) == 'a') {
                S[i] = 'b';
            }
 
            // Otherwise, change S[i]
            // to 'a'
            else {
                S[i]= 'a';
            }
        }
        else {
 
            // If S[i] is 'z', then
            // change S[i] to 'y'
            if (S.charAt(i) == 'z') {
 
                S.charAt(i) = 'y';
            }
 
            // Otherwise, change S[i]
            // to 'z'
            else {
 
                S[i] = 'z';
            }
        }
    }
 
    // Return the result
    return S;
}
 
// Driver Code
    var S = "giad";
    var N = S.length;
    document.write(performOperation(S, N));
     
// This code is contributed by shivanisinghss2110
</script>
Producción: 

azbz

 

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

Publicación traducida automáticamente

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