我需要的是从包含单词的数组2中的数组1中查找短语。让我们说阵列一包含[“玛格丽特是一个女孩”; “爱”;“土豆”; “游泳”],另一个是随机吐出的数据。如何有效地检查短语(一系列单词)和单词? 因为,按照我认为的方式,做老式的方式将成为时间问题。
答案 0 :(得分:2)
如果您使用__.exists
或__.forall
函数,只要找到(非)匹配结果,它们就会短路,这与for循环一样有效:
let arr1 = [| "Margaret is a girl"; "Loves";"Potato"; "Swim" |]
let arr2 = [| "Margaret"; "is"; "a"; "girl" |]
let ``can be built from`` words phrase =
phrase
|> String.split ' '
|> Array.forall (fun word -> words |> Array.contains word)
let buildablePhrases = arr1 |> Array.filter (``can be built from`` arr2)
如果数组很大并且上面的代码仍然太慢,我想你需要开始引入优化 - 删除重复项,缓存最频繁的搜索等等。哪些优化有意义取决于你正在处理的数据用。