Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何有效地搜索单词数组中的特定短语?_Arrays_String_Performance_F# - Fatal编程技术网

Arrays 如何有效地搜索单词数组中的特定短语?

Arrays 如何有效地搜索单词数组中的特定短语?,arrays,string,performance,f#,Arrays,String,Performance,F#,我需要的是从包含单词的数组2中的数组1中查找短语。假设一个数组包含[“Margaret是个女孩”;“Loves”;“Potato”;“Swime”],另一个数组是随机吐入数组的单词文本。如何有效地检查短语(一系列单词)和单词? 因为,按照我的想法,用老式的方式做这件事将是一个时间问题 如果您使用\uuuu0.exists或\uu0.forall函数,只要找到(非)匹配结果,它们就会短路,这将与for循环一样有效: let arr1 = [| "Margaret is a girl"; "Love

我需要的是从包含单词的数组2中的数组1中查找短语。假设一个数组包含[“Margaret是个女孩”;“Loves”;“Potato”;“Swime”],另一个数组是随机吐入数组的单词文本。如何有效地检查短语(一系列单词)和单词?
因为,按照我的想法,用老式的方式做这件事将是一个时间问题

如果您使用
\uuuu0.exists
\uu0.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)

如果数组太大,而上面的代码仍然太慢,我想您需要开始引入优化—删除重复项、缓存最频繁的搜索等。哪些优化有意义取决于您处理的数据。

您尝试了什么,具体是什么,你在挣扎吗?我已经尝试使用FOR循环对这个问题进行排序,并且多次使用相同的数组。。。我想改进它,缩短所需时间您的问题并不琐碎,如果您需要最佳性能,则需要一个非琐碎的解决方案。使用(aka-tries)可以高效地搜索大文本中的多个字符串。谢谢,我将尝试在我的代码中实现您的想法!