Nit*_*eti 1 ruby set data-structures
我想在Ruby中使用一个数据结构,它只存储一次字符串,并在下次尝试将其放入时拒绝它(类似于'SET').实现需要最有效(例如,比数组中的线性搜索更好).
此外,我尝试使用Hash,但是具有相同值的多个字符串(我从一些现有字符串的切片操作得到的这些字符串)进入Hash,似乎正在计算它们的不同哈希值.
什么是最好和最有效的出路?我不想使用红宝石宝石.我正在研究一个在线评判的拼图解决方案,我只能提交自己的代码.
这是我写的代码片段:
for string in @string_store do
for c in 0...string.length
index_to_sum=0
while c+index_to_sum<string.length do
substring=string[c..(c+index_to_sum)]
unless @hash_store[substring]=='X'
@hash_store[substring]='X'
end
index_to_sum+=1
end
end
end
Run Code Online (Sandbox Code Playgroud)
Ruby集怎么样:)
require 'set'
s1 = Set.new [1, 2] # -> #<Set: {1, 2}>
s2 = [1, 2].to_set # -> #<Set: {1, 2}>
s1 == s2 # -> true
s1.add("foo") # -> #<Set: {1, 2, "foo"}>
s1.merge([2, 6]) # -> #<Set: {6, 1, 2, "foo"}>
s1.subset? s2 # -> false
s2.subset? s1 # -> true
Run Code Online (Sandbox Code Playgroud)
虽然它使用了一个require,Ruby Set是Ruby标准库的一部分,所以它应该完全可以接受你的代码提交