Solution 4 for Scaler Topics Fortnightly Contest - 2

Learn via video course
FREE
View all courses
DSA Problem Solving for Interviews using Java
DSA Problem Solving for Interviews using Java
by Jitender Punia
1000
4.9
Start Learning
DSA Problem Solving for Interviews using Java
DSA Problem Solving for Interviews using Java
by Jitender Punia
1000
4.9
Start Learning
Topics Covered

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.

C++ Implementation

Java Implementation

Python Implementation