[英]return sorted array in lexicographical order python
a1 = ['arp', 'bull', 'mice']
a2 = ["lively", "alive", "harp", "sharp", "armstrong"]
我需要它返回:
['arp']
我的代碼是:
def in_array(array1, array2):
x = array1
return sorted(x)
適用於:
a1 = ["live", "arp", "strong"]
a2 = ["lively", "alive", "harp", "sharp", "armstrong"]
r = ['arp', 'live', 'strong']
如何對數組進行排序,只匹配作為a2子字符串的排序元素?
您可以簡單地使用一個filter
並檢查a2
是否包含包含此類子字符串的any(..)
元素:
def in_array(a1,a2):
return filter(lambda e1: any(e1 in e2 for e2 in a2),a1)
如果您還希望對結果進行排序,則可以使用sorted(..)
:
def in_array(a1,a2):
return sorted(filter(lambda e1: any(e1 in e2 for e2 in a2),a1))
如果要消除重復項,可以使用set(..)
:
def in_array(a1,a2):
return sorted(set(filter(lambda e1: any(e1 in e2 for e2 in a2),a1)))
該算法將在O(n×m + n×log(n))中運行 , 其中 a1
的元素數為n ,而a2
的元素數為m 。
如果可以在ar2
上進行預處理(並生成例如trie),則可以提高O(n)的算法復雜度。 但這僅在a1
中的元素數量a2
的元素數量的情況下才是有益的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.