1 条题解
-
0
#include <iostream> #include <vector> #include<cstring> #include<regex> using namespace std; vector<string> splitString(string input) { vector<string>output; string temp1; // 用于分割的标点符号和空格 const char* split=",;.:?\'\" "; // 转换为char*类型 char* charInput=new char[input.length()+1]; strcpy(charInput,input.c_str()); // 用strtok分割输入的这句话 char* p2=strtok(charInput,split); while(p2!=NULL) { output.push_back(p2); p2=strtok(NULL,split); } return output; } // 依据单词进行联想 vector<string> lenovo(vector<string> inputWords,string pre) { vector<string> output; output.push_back(pre); // 设定正则表达式,找到以pre开头的单词 string patternText="\\b"+pre+"\\w*"; regex pattern(patternText); for(auto word:inputWords) { bool ret=regex_match(word,pattern); // 匹配了还要看这里是否有重复的 if(ret) { bool flag=false; for(auto out:output) if((out.compare(word))==0) flag=true; if(!flag) output.push_back(word); } } return output; } int main(int argc, char *argv[]) { string input; // 输入带空格的字符串要用getline getline(cin,input); string pre; cin>>pre; vector<string> splited=splitString(input); vector<string> lenovod=lenovo(splited,pre); for(auto word:lenovod) cout<<word<<" "; }
- 1
信息
- ID
- 57
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 234
- 已通过
- 71
- 上传者