Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
236 views
in Technique[技术] by (71.8m points)

ruby - array of substrings in array of strings

I have two array of strings. Strings in one array might be the subset of string in other array. I need to find out which all strings in one array are the substrings of strings in the other array

Example:

arr1 = ["firestorm", "peanut", "earthworm"]
arr2 = ["fire", "tree", "worm", "rest"]

result:

res = ["fire","worm", "rest"]

My solution is mentioned below. But it takes a lot of time. I have to process Thousands of words.

Solution:

res =[]
arr1.each do |word1|
  arr2.each do |word2|
   if word1.include? word2
     res << word2
   end
  end
end

Please suggest me the faster way to to do this

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Unfortunely we don't know your solution.

But Array takes up more memory space than String. So you can convert it.

arr1 = ["firestorm", "peanut", "earthworm"]
arr2 = ["fire", "tree", "worm", "rest"]

arr1 = arr1.join(',')

And then

res = arr2.select { |word| arr1.include?(word) } #=> ["fire", "worm", "rest"]

or

res = arr2.select { |word| arr1.match?(word) } #=> ["fire", "worm", "rest"]

or

res = arr2.select { |word| arr1.match(word) } #=> ["fire", "worm", "rest"]

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...