【发布时间】:2014-02-27 01:14:06
【问题描述】:
假设给定一个字符串向量vector<string> names = {"ab","abs","act","add"}。我还得到了一个字符串前缀string prefix ("ab")。我的工作是用所有以给定前缀开头的名称填充另一个字符串向量(我们称之为vector<string> name_list)。目前我通过简单地使用如下的字符串比较函数来做到这一点:
for (int i = 0; i < names.size(); ++i)
{
if (names[i].compare(0, prefix.size(), prefix) == 0) // If name begins with prefix
(*name_list).push_back(names[i]);
}
这适用于小向量。在上面的示例中,输出将是["ab","abs"] 我的问题是,当names 中有数百万个字符串时,这是否是最有效的算法。如果不是,还有哪些算法可以使用?
【问题讨论】:
-
为了节省一些内存,您可以将字符串读入 trie
-
我觉得使用后缀数组可以减少比较次数。
标签: c++ string vector substring prefix