擅长:python、mysql、java
<p>我的解决方案:</p>
<pre><code>A = ['an378j', 'an378jijm', 'fg453h', 'fg453hbrd']
B = ['fg453h2564677sakjh', 'an378jijm564456464ewf', 'fg453hbrd8968764ewf', 'an378j86764edwf']
tmp_A = A.copy()
def get_pair(b_val):
# All possible pairs from A for b_el:
possible_pairs = [val for i, val in enumerate(tmp_A) if b_val.startswith(val)]
# Longest of possible pairs is pair we should use:
pair = sorted(possible_pairs, key=len, reverse=True)[0]
# Pair we use can't be used again:
tmp_A.pop(tmp_A.index(pair))
# Return:
return pair
# Index of pair is key to sort:
res = sorted(B, key=lambda b_val: A.index(get_pair(b_val)))
print(res)
# ['an378j86764edwf', 'an378jijm564456464ewf', 'fg453h2564677sakjh', 'fg453hbrd8968764ewf']
</code></pre>
<p>对于不同的输入:</p>
<pre><code>A = ['an378j', 'an378jijm', 'fg453h', 'fg453hbrd', 'an']
B = ['fg453h2564677sakjh', 'an378jijm564456464ewf', 'fg453hbrd8968764ewf', 'an378j86764edwf', 'an378j']
# ['an378j86764edwf', 'an378jijm564456464ewf', 'fg453h2564677sakjh', 'fg453hbrd8968764ewf', 'an378j']
</code></pre>