[英]combinations of substrings in a string
如何在給定的字符串中找到一組字符串的所有可能組合?
strings = ["ab","aa","ab","bb","ba","aba","aab"]
given_string = "abaababbab"
必須返回:
[
["ab","aa","ba","bb","ab],
["ab","aab","ab","ba","bab"]
["aba","aba","bb","ab"]
]
一個大概的想法可能是這樣的:
strings.select do |s|
given_string.index(s)
end
這將為您提供:
["ab", "aa", "ab", "bb", "ba", "aba", "aab"]
我不確定您是否在這里尋找重復項。 如果您不小心,可能會導致計算復雜的問題,因為這種情況使DNA測序變得異常密集。
下列:
strings = ["ab","aa","ab","bb","ba","aba","aab"]
@strings = strings.uniq!
@given_string = 'abaababbab'
@given_length = @given_string.length
def parse
@parses.each do |parse|
before = parse.pop # offset of the part that hasn't yet been parsed
@strings.each do |str|
next unless m = @given_string.match(str, before)
first, last = m.offset(0)
next unless first == before
if last == @given_length
@completed_parses.push([*parse, str])
else
@new_parses.push([*parse, str, last])
end
end
end
@parses = @new_parses
@new_parses = []
parse unless @parses.empty?
end
@parses = [[0]]
@new_parses = []
@completed_parses = []
parse
p @completed_parses
會給你:
[["aba", "aba", "bb", "ab"], ["ab", "aa", "ba", "bb", "ab"]]
我不明白為什么您的答案中包含["ab","aab","ab","ba","bab"]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.