Coste mínimo para convertir hilo en palíndromo

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>
Producción

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

Deja una respuesta

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