簡體   English   中英

字符串中子字符串的組合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM