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/