explorer_123's blog

By explorer_123, history, 9 years ago, In English

Hello , i came across the problem the problem statement is like this.

You are given a string S and you have to find minimum index j LCS(S[1, j], rev(S[j + 1, N])) is maximum, where lcs is longest common subsequence between two strings.

My approach :- firstly i tried to find lcs for every index which will be O(n^3). Then i tried to find length of Longest Palindromic subsequence of a string. let val=length of Longest Palindromic subsequence. So my final answer will be floor(val/2). Now to find a minimum j i backtrack and find what lps is and then according to that j will be retured. The problem which i faced was i was able to find length correctly for pre test cases but index was not minimum , as there can be more than one lps in string. now my question is whether my approach of finding lps length is correct or not ? and please suggest some good approach to find solution for this question ?

i am not able to see that question now so , i can not share the link.

  • Vote: I like it
  • -10
  • Vote: I do not like it

| Write comment?
»
9 years ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Would this approach work?

First, reverse the string S and call it string B. Calculate all values for dp[prefix of S][prefix of B] = longest common subsequence of [prefix of S] and [prefix of B]. You can calculate this in O(N^2).

Then, you loop through all prefixes of S and prefixes of B where S and B do not intersect and find the maximum length. If there are multiple states that have the maximal answer, then choose the state where the length of the prefix of S is minimal.