#2193

Minimum Number of Moves to Make Palindrome

candidate master · 1360 · lc hard +32 · verified · 52.7% accepted · 1,053 likes · top 43%

Description

You are given a string s consisting only of lowercase English letters.

In each move, you may swap any two adjacent characters.

Return the minimum number of moves needed to make s a palindrome.

The input is guaranteed to always be convertible to a palindrome.

Example 1:

Input: s = "aabb"
Output: 2
Explanation:
We can obtain two palindromes from s, "abba" and "baab".
- We can obtain "abba" from s in 2 moves: "aabb" -> "abab" -> "abba".
- We can obtain "baab" from s in 2 moves: "aabb" -> "abab" -> "baab".
Thus, the minimum number of moves needed to make s a palindrome is 2.

Example 2:

Input: s = "letelt"
Output: 2
Explanation:
One of the palindromes we can obtain from s in 2 moves is "lettel".
One of the ways we can obtain it is "letelt" -> "letetl" -> "lettel".
Other palindromes such as "tleelt" can also be obtained in 2 moves.
It can be shown that it is not possible to obtain a palindrome in less than 2 moves.

Code

1
2
3