ruby - 如何在不使用太多内存的情况下在 Ruby 中查找字符串数组的所有排列?

标签 ruby algorithm

line = gets
L=line.split(" ")

searchMap=L.permutation.map(&:join)
S =  gets

searchMap.each do |item|
    if S.include? item
        puts S.index(item)
        end
end

如果 L 非常大,那么我会得到 `join': failed to allocate from permutation from each.

最佳答案

你现在正在做的是创建一个枚举器,它一次产生一个排列,不会消耗太多内存,然后用 .map(&:join) 你把所有的东西都放在从这个枚举器中出来,形成一个巨大的数组 searchMap

取而代之的是,您应该一次从枚举器中提取一个排列,然后在上面做您的把戏,而不是使用 searchMap.each 遍历巨大的数组:

line = gets
L=line.split(" ")

S =  gets

L.permutation do |item|
    if S.include? item.join
        puts S.index(item.join)
    end
end

关于ruby - 如何在不使用太多内存的情况下在 Ruby 中查找字符串数组的所有排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18982667/

相关文章:

algorithm - Big O,你如何计算/近似?

java - 欧拉计划问题 2 : sum of even Fibonacci numbers

ruby - 散列(在像 Ruby 这样的语言中)如何工作 "under the hood"?

ruby-on-rails - 在 Ruby 1.9 和 Rails 3 中使用 SOAP Web 服务?

ruby-on-rails - 仅当属性存在时如何读取属性?

algorithm - 标准化分数数据集的最佳方法是什么?

python - 在 Python 和 Networkx 中动态创建满足条件的图

algorithm - remove_if 不起作用,不确定是什么问题

ruby-on-rails - 如何使用 Inherited Resources Rails 插件根据成功或失败自定义 flash 消息?

html - 将 Ruby 与 HTML 代码链接