QR7. 文本嗅探
描述
现在有一个字符串列表,和一个关键词列表,请设计一个高效算法,检测出含关键字列表中关键字(一个或多个)的字符串。
给定字符串数组A及它的大小n以及关键词数组key及它的大小m,请返回一个排好序的含关键词的字符串序号的列表。保证所有字符串长度小于等于100,关键词个数小于等于100,字符串个数小于等于200。保证所有字符串全部由小写英文字符组成。若不存在含关键字的字符串,请返回一个只含-1的数组。
示例1
输入:
["nowcoder","hello","now"],3,["coder",now],2
输出:
[0,2]
C++ 解法, 执行用时: 3ms, 内存消耗: 428KB, 提交时间: 2021-09-07
class KeywordDetect { public: vector<int> containKeyword(vector<string> A, int n, vector<string> keys, int m) { // write code here vector<int> ans; for(int i=0; i<A.size(); i++) { string s = A[i]; bool flag = false; for(int j=0; j<keys.size(); j++) { if(s.find(keys[j])!= string::npos) { flag = true; break; } } if(flag) ans.push_back(i); } if(ans.empty()) ans.push_back(-1); return ans; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 624KB, 提交时间: 2022-03-30
class KeywordDetect { public: vector<int> containKeyword(vector<string> A, int n, vector<string> keys, int m) { // write code here set<int> temp; vector<int> ans; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if(A[j].find(keys[i]) != -1) temp.insert(j); } } if (temp.empty()) temp.insert(-1); for (auto it = temp.begin(); it != temp.end(); it++) { ans.push_back(*it); } return ans; } };
C++ 解法, 执行用时: 4ms, 内存消耗: 428KB, 提交时间: 2021-10-10
class KeywordDetect { public: vector<int> containKeyword(vector<string> A, int n, vector<string> keys, int m) { vector<int> result; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if (A[i].find(keys[j])!=-1){ result.push_back(i); break; } } } if(result.size()==0) result.push_back(-1); return result; } };
C++ 解法, 执行用时: 4ms, 内存消耗: 428KB, 提交时间: 2021-08-25
class KeywordDetect { public: vector<int> containKeyword(vector<string> A, int n, vector<string> keys, int m) { // write code here vector<int> ans; for(int i=0; i<A.size(); i++) { string s = A[i]; bool flag = false; for(int j=0; j<keys.size(); j++) { if(s.find(keys[j])!= s.npos) { flag = true; break; } } if(flag) ans.push_back(i); } if(ans.empty()) ans.push_back(-1); return ans; } };
C++ 解法, 执行用时: 4ms, 内存消耗: 476KB, 提交时间: 2020-10-31
class KeywordDetect { public: vector<int> containKeyword(vector<string> A, int n, vector<string> keys, int m) { // write code here vector<int>a; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(A[i].find(keys[j])!=-1) {a.push_back(i);break;} } } if(!a.empty()) return a; a.push_back(-1); return a; } };