Class Solution

  • All Implemented Interfaces:

    
    public final class Solution
    
                        

    1830 - Minimum Number of Operations to Make String Sorted.

    Hard

    You are given a string s ( 0-indexed ). You are asked to perform the following operation on s until you get a sorted string:

    • Find the largest index i such that 1 <= i < s.length and s[i] < s[i - 1].

    • Find the largest index j such that i <= j < s.length and s[k] < s[i - 1] for all the possible values of k in the range [i, j] inclusive.

    • Swap the two characters at indices i - 1 and j.

    • Reverse the suffix starting at index i.

    Return the number of operations needed to make the string sorted. Since the answer can be too large, return it modulo <code>10<sup>9</sup> + 7</code>.

    Example 1:

    Input: s = "cba"

    Output: 5

    Explanation: The simulation goes as follows: Operation 1: i=2, j=2. Swap s1 and s2 to get s="cab", then reverse the suffix starting at 2. Now, s="cab".

    Operation 2: i=1, j=2. Swap s0 and s2 to get s="bac", then reverse the suffix starting at 1. Now, s="bca".

    Operation 3: i=2, j=2. Swap s1 and s2 to get s="bac", then reverse the suffix starting at 2. Now, s="bac".

    Operation 4: i=1, j=1. Swap s0 and s1 to get s="abc", then reverse the suffix starting at 1. Now, s="acb".

    Operation 5: i=2, j=2. Swap s1 and s2 to get s="abc", then reverse the suffix starting at 2. Now, s="abc".

    Example 2:

    Input: s = "aabaa"

    Output: 2

    Explanation: The simulation goes as follows:

    Operation 1: i=3, j=4. Swap s2 and s4 to get s="aaaab", then reverse the substring starting at 3. Now, s="aaaba".

    Operation 2: i=4, j=4. Swap s3 and s4 to get s="aaaab", then reverse the substring starting at 4. Now, s="aaaab".

    Constraints:

    • 1 &lt;= s.length &lt;= 3000

    • s consists only of lowercase English letters.

    • 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 makeStringSorted(String s)
      • Methods inherited from class java.lang.Object

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