I think you should think about what do you really want to find?
- the first match and a mapping from that on?
- the longest math and a mapping from that on?
- the most matches and a mapping between those?
- the best mapping (define "best")
To give examples for each of my points, I use these arrays
a b c d e f g h i j k l m
z b y d e x h i j k w v m
how would that map?
- this would find the first match at "b" and result in
a|b|c|d|e|f|g|h|i|j|k|l|m
z|b|y|d|e|x|h|i|j|k|w|v|m
- this would find the longest match at "h i j k" and result in something like
a b|c|d|e|f|g|h|i|j|k|l|m
z |b|y|d|e|x|h|i|j|k|w|v m
- this would find
a|b|c|d|e|f g|h|i|j|k|l |m
z|b|y|d|e|x |h|i|j|k|w v|m
- I have no idea about that
From what I recall from my studies, at least the "most-matches" sounds to me like a problem that has a complexity O(n)=n**2.
You will have to compare each possible mapping, score it and compare the scores to decide which fits your needs best.
Non-trivial, i think