[The question had a long description and I am rephrasing]
Say we have a list of Strings contains an starting process Ai and an edning one Bi where i is an integer showing the id of the process. We can have muliple Start/End pairs which are shown by adding numbers after each one of these letters.
Ai should come before Bi)A1, B1, A1, B1Ai and Bi should exist in the valid path( with )For example:
[A1, B1, A2, B2] is a valid process array since every Ai has ended with the same Bi.
[A1, A2, B2, B1] or [A1, A2, B1, B2] are also valid
[A1, A2, B1, B2] valid
[A1, B1, A2, B2] valid
[A1, B2, B1, A2] invalid
[A1, B2] invalid
[A1, A2] invalid
[A1, B1, B1] invalid
[] valid
[A1, A1, B1] invalid
[A1, A1, B1, B1] invalid
[A1, B1, A1] invalid
[A1, B1, A1, B1] invalid
Given a list of processes, find the longest valid process subarray you can find:
[A1, B1, A2, B2] : return 4[A1, A2, B2] : return 2 (A2, B2)[A1, B1, A2, A1, B1, B2] : return 4 (A2, A1, B1, B2)I tried to solve is via stack and similar to Longest Valid Parenthesis but it failed for cases where you have full match (A1, B1, A2, A1, B1, B2 vs A1, B1, A2, B2)