大家。
我正在尝试从矢量中删除所有唯一值。下面是我的矢量程序输出。我想要保留在矢量中的字符串位于灰色框中。
ART-105-1129 Spring 2004
FILM-298-1129 Spring 2004
GEOG-298-1370 Spring 2004
MUSLT-110-1370 Spring 2004
BCA-298-1617 Spring 2004
HIST-120-1617 Spring 2004
COMM-120-5008 2016年夏季
ANTHR-140-5306 2016年秋季
ENGL-122-5355 2016年秋季
我要保留的代码在第二个“ - ”之后具有匹配的字符串。
我用于上述输出的代码是。
set<string> s(listOfCourses.begin(), listOfCourses.end());
listOfCourses.assign(s.begin(), s.end());
set<string> dupremove(duplicateTermsAndSections.begin(), duplicateTermsAndSections.end());
duplicateTermsAndSections.assign(dupremove.begin(), dupremove.end());
for (vector<string>::iterator itouter = duplicateTermsAndSections.begin(); itouter!= duplicateTermsAndSections.end(); itouter++) !copyDuplicateTermsAndSections.empty(); copyDuplicateTermsAndSections.pop())
{
for (vector<string>::iterator it = listOfCourses.begin(); it != listOfCourses.end(); it++)
{
if ((*it).find(*itouter) != string::npos)
cout << *it << endl;
}
cout << endl;
}
我想删除没有匹配术语的字符串。匹配的术语类似于下面的2个字符串。它们都有匹配的“-1129 Spring 2004”。
ART-105-1129 2004春季
FILM-298-1129 2004春季
以下是两个不匹配的术语,它们没有相同的子串(如上所述)
ANTHR-140-5306 2016年秋季
ENGL-122-5355 2016年秋季
答案 0 :(得分:0)
如果你计算一个频率图,其中的键是你的子字符串,你要在第二个&#39; - &#39;之间进行提取。和以下空间。在迭代字符串集合时,请查看地图。如果该键尚未出现在地图中,请在该地图中为该键添加值1。如果键位于地图中,请增加存储在地图中与地图对应的值。
然后,再次遍历字符串集合,如果提取的子字符串在映射中具有相应的值1,则它是唯一的,否则它是重复的。
我将把它作为练习,让您为上述算法使用C ++特定语法。