# Minimum cost to convert string into palindrome

• Difficulty Level : Easy
• Last Updated : 22 Jul, 2022

Convert string S into a palindrome string. You can only replace a character with any other character. When you replace character ‘a’ with any other character, it costs 1 unit, similarly for ‘b’ it is 2 units ….. and for ‘z’, it is 26 units. Find the minimum cost required to convert string S into palindrome string.

Examples :

Input : abcdef
Output : 6
Explanation: replace 'a', 'b' and
'c' => cost= 1 + 2 + 3 = 6

Input : aba
Output : 0

The idea is to start comparing from the two ends of string. Let i be initialized as 0 index and j initialized as length – 1. If characters at two indices are not same, a cost will apply. To make the cost minimum replace the character which is smaller. Then increment i by 1 and decrement j by 1. Iterate till i less than j

Implementation:

## C++

 // CPP program to find minimum cost to make// a palindrome.#include using namespace std; // Function to return costint 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 codeint 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 costdef 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 codest = "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.



## Javascript



Output

6

Time Complexity : O(|S|) , where |S| is size of given string.
Space Complexity : O(1) , as we are not using any extra space.

My Personal Notes arrow_drop_up