一、在字符串str1中删除那些在str2中出现的字符。
str2可能会有重复字符,直接遍历会导致效率低下,故先借助STL的set容器对str1查重;
然后,遍历str1和str2,对str1进行查重。
#include <iostream> #include <string> #include <set> using namespace std; void deleteChar(char* strRet, const string& str1,int len1, const string& str2,int len2) { if(len1 < 1) //异常检测 { return; } bool findIt = false; //查找标记位 set<char>mySet; int i = 0,j = 0,k = 0; for(i = 0; i < len2; ++i) //str2去重复字符 { mySet.insert(str2[i]); } for(j = 0; j < len1; j++) { for(set<char>::iterator it = mySet.begin(); it != mySet.end(); ++it) { if(str1[j] == *it && findIt == false) { findIt = true; break; } }//end for if(!findIt) { strRet[k++] = str1[j]; } findIt = false; //标记位置位 }//end for strRet[k] = '