Class Solution

  • All Implemented Interfaces:

    
    public final class Solution
    
                        

    2193 - Minimum Number of Moves to Make Palindrome\.

    Hard

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

    In one move , you can select any two adjacent characters of s and swap them.

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

    Note that the input will be generated such that s can always be converted 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.

    Constraints:

    • 1 <= s.length <= 2000

    • s consists only of lowercase English letters.

    • s can be converted to a palindrome using a finite number of moves.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
    • Field Summary

      Fields 
      Modifier and Type Field Description
    • Constructor Summary

      Constructors 
      Constructor Description
      Solution()
    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
    • Method Summary

      Modifier and Type Method Description
      final Integer minMovesToMakePalindrome(String s)
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait