首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向量搜索押韵字

向量搜索押韵字
EN

Stack Overflow用户
提问于 2020-09-02 15:51:54
回答 1查看 93关注 0票数 0

在我的程序中,我必须提示用户输入一个单词,并报告所有押韵的单词(通过检查最后3个字母是否相同)。

例如,如果用户输入了单词"time“,我必须返回lime、dime、intime、entered等,形成一个有106,000个单词的向量。

所有106,000个单词都在一个向量vector<string>words中,该向量将包含

代码语言:javascript
复制
time, lime, line, dime, intime, abaca, clilica, dog, ball, regime, sentence, return, which, contain, word, pool, etc....

在所有这些之外,我需要获得与用户输入的单词节奏相同的单词。

如何使用用户输入的字符串创建一个函数来查找所有这些内容?

EN

回答 1

Stack Overflow用户

发布于 2020-09-02 16:35:33

你说rhyme = the last 3 letters are the same。向量中的10万6千个单词意味着你有足够的内存,所以建议使用下面的方法来换取空间。

代码语言:javascript
复制
unordered_map<string, vector<string>> rhymesMap;
int const rhymesSuffixLength = 3;

void preProcess(vector<string>& words){
    for(auto const& word: words){
        if(word.size() < rhymesSuffixLength)
            continue;
        string suffix = word.substr(word.size() - rhymesSuffixLength);
        rhymesMap[suffix].push_back(word);
    }
}

vector<string> getRhymes(string word){
    if(word.size() < rhymesSuffixLength)
        return {};
    string suffix = word.substr(word.size() - rhymesSuffixLength);
    return rhymesMap[suffix];
}

vector上搜索押韵太慢了,unordered_map需要查找,而且相当快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63701030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档