【发布时间】:2014-04-26 08:23:36
【问题描述】:
对于我的学校,我必须创建一个应该索引字符串的程序。 我编写了基本的简单方法,它正在工作,但我对更有效的方法来解决这个问题感兴趣。 编辑:我应该索引字符串、T 类型的向量和 T 类型的列表。
索引字符串: 我使用专门的字符串模板。 我开始使用Knuth–Morris–Pratt algorithm,这似乎提供了更好的结果。我查看了 DAWG。
我的作业中也有一个给定的提示。
一旦被索引,序列就会被搜索多次。因此,它使 感觉花一些时间预处理序列,搜索可能 更快。每个实例大约调用 100 次搜索。
我不明白如何使用这个建议。你怎么看?
输入示例:
Indexclass<string> test ( "aaaaaaau aaauaaaau" );
vector<int> result = test . Index ( "aa" );
// 0 1 2 3 4 5 9 10 13 14 15
Indexclass <list<string>> test2 ( list<string>{ "hello", "world", "test", "this", "foo", "test", "this", "done" } );
vector<int> r23 = test2 . Index ( list<string>{"test", "this", "foo"} );
// 2
【问题讨论】:
-
您能否提供更多关于您要解决的问题的详细信息,以及一些输入和输出示例?
-
当然可以。我更新了我的帖子。
-
你的
Indexclass::Index()是做什么的? -
对于字符串,它是 Knuth–Morris–Pratt 算法。否则它使用完全幼稚的方法来索引要索引的序列。它返回一个 int 向量,其中包含序列中相应元素的位置。
-
所以基本上你正在搜索确切的序列
{"test", "this", "foo"}?
标签: c++ string algorithm indexing