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