列表

详情


SP1. 某云ES倒排索引

描述

某云ES的文件管理系统中,文档由一个int型的ID和字符串类型的文档描述content组成,请根据提供的文档ID和文档描述,设计对搜索单词的倒排索引,根据输入要查找的单词,输出对应的文档ID。

示例1

输入:

[1, 5, 4, 9],["My lover", "Yours", "you are young", "My old age"],"My"

输出:

[1,9]

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 3ms, 内存消耗: 388KB, 提交时间: 2022-06-28

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param ID int整型vector 
     * @param content string字符串vector 
     * @param word string字符串 
     * @return int整型vector
     */
    vector<int> invertedIndex(vector<int>& ID, vector<string>& content, string word) {
        // write code here
        vector<int> res;
        for(int i = 0; i < content.size(); i++){
            if(content[i].find(word) != string::npos) res.push_back(ID[i]);
        }
        
        return res;
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 396KB, 提交时间: 2022-07-29

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param ID int整型vector 
     * @param content string字符串vector 
     * @param word string字符串 
     * @return int整型vector
     */
    bool cmp(const string& des,const string& src){
        int n=des.size();
        int m=src.size();
        vector<int> next(n);
        for(int i=1,j=0;i<n;++i){
            while(j>0&&des[i]!=des[j]){
                j=next[j-1];
            }
            if(des[i]==des[j])++j;
            next[i]=j;
        }
        for(int i=0,j=0;i<n;++i){
            while(j>0&&des[i]!=src[j]){
                j=next[j];
            }
            if(des[i]==src[j])++j;
            if(j==m)return true;
        }
        return false;
    }
    vector<int> invertedIndex(vector<int>& ID, vector<string>& content, string word) {
        // write code here
        int n=content.size();
        vector<int> res;
        for(int i=0;i<n;++i){
            if(cmp(content[i],word))res.push_back(ID[i]);
        }
        return res;
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 396KB, 提交时间: 2022-07-20

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param ID int整型vector 
     * @param content string字符串vector 
     * @param word string字符串 
     * @return int整型vector
     */
    vector<int> invertedIndex(vector<int>& ID, vector<string>& content, string word) {
        // write code here
        vector<int> res{};
        for(int i = 0; i < ID.size(); i++){
            if(content[i].find(word) != string::npos){
                res.push_back(ID[i]);
            }
        }
        return res;
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 396KB, 提交时间: 2022-06-25

class Solution {
  public:
    vector<int> invertedIndex(vector<int>& ID, vector<string>& content,
                              string word) {
        
        vector<int> z;       
        for (int i = 0; i < content.size(); i++) {
            if (content[i].find(word) != -1) z.push_back(ID[i]);
        }
        return z;
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 396KB, 提交时间: 2022-06-24

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param ID int整型vector 
     * @param content string字符串vector 
     * @param word string字符串 
     * @return int整型vector
     */
    vector<int> invertedIndex(vector<int>& ID, vector<string>& content, string word) {
        // write code here
        vector<int> result;
        for(int i=0;i<content.size();i++)
        {
            if(content[i].find(word) != -1) result.push_back(ID[i]);
        }
        return result;
    }
};

上一题