Given two non-empty strings A and B composed of lowercase Latin letters, what is the minimum number of substrings of A needed to form string B? The lengths of A and B are at most 100000. If the task is not possible for a given input, output a rogue value (a.k.a. -1).
I was thinking about solving this with an O(N^2) DP method, but that does not fit into the time limit of 5 seconds.
Please help, and thanks in advance!
EDIT: Note that chosen substrings can overlap. I put some cases below.
Input #1: abcbcd abcd
Output #1: 2
Input #2: iamsmart iamdumb
Output #2: -1
Input #3: asmallmallinmalta atallmallinlima
Output #3: 5
Explanations: "abcd" = "ab" + "cd", no "d"s in the first string of Input 2, "atallmallinlima" = "a" + "ta" + "llmallin" + "li" + "ma"
Auto comment: topic has been updated by vamaddur (previous revision, new revision, compare).
Auto comment: topic has been updated by vamaddur (previous revision, new revision, compare).
It is optimal to use the longest possible substring greedily (why?).
Use a suffix data structure to compute LCP query effeciency.
Can you elaborate on the use of the data structure?
Could you provide the problem link?