我想生成特定字符串的所有可能的连续单词组合,给定最小长度作为参数。
假设我有“hello”,结果将是(最小长度为 3):“hel”、“ell”、“llo”、“hell”、“ello”、“hello”。
我实现这一目标的一种方法是通过:
def get_all_word_combinations(str, min_length)
chars = str.split('')
all_results = []
(min_length..str.size).each do |x|
chars.each_cons(x) do |r|
all_results << r.join
end
end
return all_results
end
但不确定这是否适用于更大的单词。
最佳答案
此解决方案避免了不必要的连接
:
word = "hello"
size = word.size
min_size = 3
(min_size..size).flat_map { |l| (0..size - l).map { |i| word[i, l] } }
#=> ["hel", "ell", "llo", "hell", "ello", "hello"]
如果您不需要数组,而只需要迭代每个可能的子字符串,则此解决方案将使用更少的内存:
(min_size..size).each do |l|
(0..size - l).each do |i|
# do something with word[i, l]
end
end
关于ruby - 生成字符串的所有可能的连续单词组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41524160/