2017-10-04 93 views
0

我有一個非常有趣的問題。將一組字符串匹配到一個字符串以最大化可能的匹配數

我有一組字符串,我想知道如何最好地匹配這些字符串組合在另一個字符串對最大化函數。

就是一個例子。說我有一組:

['aabbcaa', 'bbc'] 

和我有串

'fgabbcdaabbcaaef' 

,爲此可能的匹配爲:

fga[bbc]daadaa[bbc]aaef 

fga[bbc]daad[aabbcaa]ef 

現在,給定一個簡單的最大化函數,我會說t帽子fga[bbc]daad[aabbcaa]ef由於匹配的字符總數而成爲贏家。一個不同的最大化函數可以給予較大的單詞更多的權重,而不是總字符。

我想知道是否有人可以指示我如何做到這一點algos。我很難過是在找到一組潛在的匹配之後,我不確定如何最大限度地利用有效方式選擇一組詞。

字典,字典中的單詞和匹配的單詞可以是任意大小。

希望我能得到任何幫助。謝謝!

回答

0

找到了答案,它很好地工作。僞代碼是:

  • 循環遍歷集合,並在目標字符串中找到設置字符串匹配的位置。存儲start_index,end_index,併爲該匹配字符串提供分數。我目前使用字符串的長度。
  • 然後用找到的所有比賽中,通過「權區間調度」算法運行它來尋找匹配的一組最佳
  • https://courses.cs.washington.edu/courses/cse521/13wi/slides/06dp-sched.pdf