GFG App
Open App
Browser
Continue

# Minimum cost to convert string into palindrome

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