String 按单词搜索给定字符串的超级字符串

String 按单词搜索给定字符串的超级字符串,string,algorithm,match,String,Algorithm,Match,对于任何输入字符串,我们都需要按任意顺序逐字查找超级字符串匹配。i、 e.输入字符串中的所有单词必须以任何顺序出现在输出字符串中。 e、 g.给定数据集: “字符串搜索” “java字符串搜索” “手动c字符串搜索等于” “java搜索代码” “c java代码搜索” 输入:“java搜索” 输出: 1) “java字符串搜索” 2) “java搜索代码” 3) “c java代码搜索” 输入:“搜索c” 输出: 1) “手动c字符串搜索等于” 2) “c java代码搜索” 这可以通过一个字

对于任何输入字符串,我们都需要按任意顺序逐字查找超级字符串匹配。i、 e.输入字符串中的所有单词必须以任何顺序出现在输出字符串中。 e、 g.给定数据集: “字符串搜索” “java字符串搜索” “手动c字符串搜索等于” “java搜索代码” “c java代码搜索”

输入:“java搜索” 输出: 1) “java字符串搜索” 2) “java搜索代码” 3) “c java代码搜索”

输入:“搜索c” 输出: 1) “手动c字符串搜索等于” 2) “c java代码搜索”

这可以通过一个字一个字的匹配以一种非常简单的方式完成。在这里,我主要是寻找一个有效的算法

输入:给定数据集中的数十亿条记录(大部分为1到10个字长的字符串)。 我需要为数百万个字符串找到超级字符串。
注意:单词是扩展字典中的单词。

您基本上需要找到两组单词的交集,输入单词和数据单词。如果交集等于输入单词,则有一个匹配项

以下是集合交点的有效算法:

我脑海中浮现的一个算法,在O(n*m)[n=大小输入,m=大小数据]中完成

Python:

match = True
for word in input.split():
  if word in data_words.split(): # linear search comparing word to each word
    continue
  else:
    match = False
    break

在排序后的列表上搜索会更快,哈希查找也会更多。这些在上面的链接中有详细说明。

您基本上需要找到两组单词的交集,即输入单词和数据单词。如果交集等于输入单词,则有一个匹配项

以下是集合交点的有效算法:

我脑海中浮现的一个算法,在O(n*m)[n=大小输入,m=大小数据]中完成

Python:

match = True
for word in input.split():
  if word in data_words.split(): # linear search comparing word to each word
    continue
  else:
    match = False
    break
在排序后的列表上搜索会更快,哈希查找也会更多。这些都在上面的链接中有详细说明。

预处理您的输入(如果可能),并为数据集中出现的单词编制索引。生成从每个单词到一组可能输出字符串的映射。例如,使用数据集

0 string search
1 java string search
2 manual c string search equals
3 java search code
4 c java code search
我们得到

c {2,4}
code {3,4}
equals {2}
java {1,3,4}
...
然后,搜索给定输入的匹配项非常简单,只需将与输入字对应的集合相交即可:

input: "java c"
output: {1,3,4} intersect {2,4} = {4}
如果将集合存储为排序列表,则可以通过并行扫描列表在线性时间(输入集合的总长度为线性)内完成交集。

预处理输入(如果可能),并为数据集中出现的单词编制索引。生成从每个单词到一组可能输出字符串的映射。例如,使用数据集

0 string search
1 java string search
2 manual c string search equals
3 java search code
4 c java code search
我们得到

c {2,4}
code {3,4}
equals {2}
java {1,3,4}
...
然后,搜索给定输入的匹配项非常简单,只需将与输入字对应的集合相交即可:

input: "java c"
output: {1,3,4} intersect {2,4} = {4}

如果将集合存储为已排序的列表,则可以通过并行扫描列表在线性时间(输入集合的总长度为线性)内完成交集。

您应该对一个输入字符串与所有数据集(数量为数十亿)进行正则表达式比较。现在我需要对另外一百万(如果不是十亿)个输入字符串重复这个操作!您应该对一个输入字符串进行regexregex比较,因为所有数据集(数量为数十亿)都相当高。现在我需要对另外一百万(如果不是十亿)个输入字符串重复这个操作!