因此,我有兩個字符串列表。這些字符串由一個或多個不同字符的分類組合形成。字符不是全部在字母表中,但給出。假設所有可能的字符都是[A,B,C,D,E],那麼這兩個列表就是這些元素的組合(在這種情況下從1到5)。檢查字符串列表中的字符子集是否包含在另一個字符串列表中
實施例:
list1 = [AB, AB, C]
list2 = [ABC, CD, ABCDE, E]
沒有定義在每個列表中的元素的數量,但範圍可以從1至30,與一般的情況下爲10左右。
現在,我想是以確定list1
中每個字符串中是否至少存在一個唯一字符組合,這些字符在list2
中也存在,無論順序如何。在本例中,[A,C,A,E]包含在list2
中[A,A,C]。
我發現做到這一點的天真方式是從每個列表中做出所有可能的1個字符組合,並查看是否至少存在一個list1
包含在list2
中的情況。但是,這可以成倍增長,因爲10個元素的5個字符的字符串列表的所有可能的組合可能是巨大的(這只是一般情況)。
我想過使用正則表達式或類似的東西,但我真的沒有想象出更有效的解決方案。
我正在爲此使用Python。以防萬一,因爲現有的解決方案或庫是相關的。
謝謝你的幫助!
因此,對於每個列表,你想建立組合中的每個元素來自列表中的單獨項目的組合?列表中的項目是否可以不參與組合? (即你的例子中的'list1'是否包含'{A,C}'?) –
對於第一個問題是的。該組合由列表中每個字符串的一個(且只有一個)元素組成。我不明白第二個問題。我想從'list2'中找到至少一個組合中來自'list1'的組合 – crscardellino