Solution 4 for Scaler Topics Fortnightly Contest - 2
Learn via video course

DSA Problem Solving for Interviews using Java
by Jitender Punia
1000
4.9
This article is part of the Scaler Topics Fortnightly Contest - 2.
Solution Approach
- You can keep a 2D dp, where first parameter will be the index of string and second parameter will be whether you have reversed this string or not. Initialize your dp to a large number.
- Let Br be the array where all the strings are reversed.
- Now for each index i check these four cases : if B[i-1] <= B[i] , then update your dp[i][0] to min of dp[i][0], dp[i-1][0]. if Br[i-1] <= B[i] , then update your dp[i][0] to min of dp[i][0], dp[i-1][1]. if B[i-1] <= Br[i] , then update your dp[i][1] to min of dp[i][1], dp[i-1][0]. if Br[i-1] <= Br[i] , then update your dp[i][1] to min of dp[i][1], dp[i-1][1]. And your answer will be minimum of dp[n][0] and dp[n][1].
- If the answer is equal to or greater thant the large number to initialized your dp with. Then it means you cannot sort your array.