 Open in App
Not now

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

 ``

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