Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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
Ruby 对于常见的组合,如何将字符串与字符串数据库进行比较和存储?_Ruby_Data Structures_String Comparison - Fatal编程技术网

Ruby 对于常见的组合,如何将字符串与字符串数据库进行比较和存储?

Ruby 对于常见的组合,如何将字符串与字符串数据库进行比较和存储?,ruby,data-structures,string-comparison,Ruby,Data Structures,String Comparison,我有一大堆固定长度的字符串(每个字符串的长度可能为100个字符),我想相互比较,找出所有字符串之间最常见的字符组合 将每个新字符串与已收集的字符串数据库进行比较的好方法是什么?那么,将结果和字符串存储到数据库中的好方法是什么?什么样的数据结构适合这种情况 我确实将问题标记为“ruby”,但我认为它非常通用,因此需要寻找任何东西。如果您的意思是,对于这3个字符串: abc 卡介苗 cde 您希望获得以下输出: a - 1 b - 2 c - 3 d - 2 e - 1 ab

我有一大堆固定长度的字符串(每个字符串的长度可能为100个字符),我想相互比较,找出所有字符串之间最常见的字符组合

将每个新字符串与已收集的字符串数据库进行比较的好方法是什么?那么,将结果和字符串存储到数据库中的好方法是什么?什么样的数据结构适合这种情况


我确实将问题标记为“ruby”,但我认为它非常通用,因此需要寻找任何东西。

如果您的意思是,对于这3个字符串:

abc 卡介苗 cde

您希望获得以下输出:

a   - 1
b   - 2
c   - 3
d   - 2
e   - 1
ab  - 1
bc  - 2
cd  - 2
de  - 1
abc - 1
bcd - 1
cde - 1
然后我建议使用TRIE(),并将每个角色组的出现次数存储在其节点中(为找到的每个新匹配项添加1)

这样,算法就相当简单了

从“abc”开始,当您遍历树(可选地创建新节点)时,为访问的每个节点添加1,然后继续使用“bc”,然后使用“c”。“bcd”也是如此。选择“bcd”、“cd”、“d”

在遍历树并向访问的每个节点添加1时,您应该覆盖所有的双节点、三节点等

希望有帮助,雷兹纳