在 C++ 中我有
vector < vector <string> > Kblist;
里面Kblist
有很多子句,clauses=kblist.size();
side里面的每一个子句的个数Kblist
都是一个字符串型的向量,句子里面的每一个词都在里面分割Kblist[i]
。
什么是最快的方法是在相同的单词中找到句子,如一个 in"I love you"
和另一个 in"you love i"
并从中删除这两个句子Kblist
,我的代码可能正在运行,但我认为它太慢了,因为很多循环。所以我想知道有没有更好的解决方案,就像使用排序clause1==clause2
或其他方法一样快。
for (int a=0; a<KBlist.size(); a++){
for (int b=a+1; b<KBlist.size(); b++){
int checksize=0;
if (KBlist[a].size()==KBlist[b].size()) {
for (int c=0; c<KBlist[a].size(); c++){
for (int d=0; d<KBlist[b].size(); d++){
if (KBlist[a][b]==KBlist[c][d]&&KBlist[a][b+1]==KBlist[c][d]) {
checksize=checksize+1;
break;
}
}
}
if (checksize==c.size()) {
inset=1;
break;
}
}
}
}
}while (duplicate==0);