Convierta la string S en una string palíndromo. Solo puede reemplazar un carácter con cualquier otro carácter. Cuando reemplaza el carácter ‘a’ con cualquier otro carácter, cuesta 1 unidad, de manera similar para ‘b’ son 2 unidades… y para ‘z’, son 26 unidades. Encuentre el costo mínimo requerido para convertir la cuerda S en una cuerda palíndromo.
Ejemplos:
Input : abcdef Output : 6 Explanation: replace 'a', 'b' and 'c' => cost= 1 + 2 + 3 = 6 Input : aba Output : 0
La idea es empezar a comparar desde los dos extremos de la cuerda. Sea i inicializado como índice 0 e inicializado j como longitud – 1. Si los caracteres en dos índices no son iguales, se aplicará un costo. Para que el costo sea mínimo, reemplace el personaje que es más pequeño. Luego incremente i en 1 y disminuya j en 1. Iterar hasta que i sea menor que j .
Implementación:
C++
// CPP program to find minimum cost to make // a palindrome. #include <bits/stdc++.h> using namespace std; // Function to return cost int cost(string str) { // length of string int len = str.length(); // Iterate from both sides of string. // If not equal, a cost will be there int res = 0; for (int i=0, j=len-1; i < j; i++, j--) if (str[i] != str[j]) res += min(str[i], str[j]) - 'a' + 1; return res; } // Driver code int main() { string str = "abcdef"; cout << cost(str) << endl; return 0; }
Java
// Java program to find minimum cost to make // a palindrome. import java.io.*; class GFG { // Function to return cost static int cost(String str) { // length of string int len = str.length(); // Iterate from both sides of string. // If not equal, a cost will be there int res = 0; for (int i = 0, j = len - 1; i < j; i++, j--) if (str.charAt(i) != str.charAt(j)) res += Math.min(str.charAt(i), str.charAt(j)) - 'a' + 1; return res; } // Driver code public static void main (String[] args) { String str = "abcdef"; System.out.println(cost(str)); } } // This code is contributed by vt_m.
Python3
# python program to find minimum # cost to make a palindrome. # Function to return cost def cost(st): # length of string l = len(st) # Iterate from both sides # of string. If not equal, # a cost will be there res = 0 j = l - 1 i = 0 while(i < j): if (st[i] != st[j]): res += (min(ord(st[i]), ord(st[j])) - ord('a') + 1) i = i + 1 j = j - 1 return res # Driver code st = "abcdef"; print(cost(st)) # This code is contributed by # Sam007
C#
// C# program to find minimum cost // to make a palindrome. using System; class GFG { // Function to return cost static int cost(String str) { // length of string int len = str.Length; // Iterate from both sides of string. // If not equal, a cost will be there int res = 0; for (int i = 0, j = len - 1; i < j; i++, j--) if (str[i] != str[j]) res += Math.Min(str[i], str[j]) - 'a' + 1; return res; } // Driver code public static void Main () { string str = "abcdef"; Console.WriteLine(cost(str)); } } // This code is contributed by vt_m.
PHP
<?php // PHP program to find minimum // cost to make a palindrome. // Function to return cost function cost($str) { // length of string $len = strlen($str); // Iterate from both sides // of string. If not equal, // a cost will be there $res = 0; for ($i = 0, $j = $len - 1; $i < $j; $i++, $j--) if ($str[$i] != $str[$j]) $res += (min(ord($str[$i]), ord($str[$j])) - ord('a') + 1 ); return $res; } // Driver code $str = "abcdef"; echo cost($str); // This code is contributed by Sam007 ?>
Javascript
<script> // Javascript program to find minimum cost // to make a palindrome. // Function to return cost function cost(str) { // length of string let len = str.length; // Iterate from both sides of string. // If not equal, a cost will be there let res = 0; for (let i = 0, j = len - 1; i < j; i++, j--) { if (str[i] != str[j]) { res += Math.min(str[i].charCodeAt(), str[j].charCodeAt()) - 'a'.charCodeAt() + 1; } } return res; } let str = "abcdef"; document.write(cost(str)); </script>
6
Complejidad de tiempo : O(|S|) , donde |S| es el tamaño de la string dada.
Complejidad espacial: O(1) , ya que no estamos utilizando ningún espacio adicional.
Publicación traducida automáticamente
Artículo escrito por chhavi saini 1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA