#include <cstdlib>
#include <string>
#include <iostream>
using namespace std;
/*string字符串删除指定字符*/
/*查找到字符串中非remove字符(i),然后覆盖字符串最前可删除字符(l)。*/
/*从l+1到i为可被覆盖区域。*/
/*移动完最后一个字符后,释放l+1到最后的一个字符所有的内存*/
size_t removechars(string &str,const string remove)
{
size_t l=0;//时间复杂度
size_t lstr=str.size();
size_t lrm=remove.size();
if (0==lstr&lrm) return 0;
bool flag=false;
size_t k=0;
for(size_t i=0;i<lstr;i++)
{
for(size_t j=0;j<lrm;j++)
{
if(str[i]==remove[j])
{
if(!flag) {k=i;flag=true;} //标志第一个删除字符
break;
}
else if(j==lrm-1&&flag) str[k++]=str[i]; //当字符串至少一个字符需要删除时,后续每一个非remove都需要移位
l++;
}
}
str.erase(k,lstr); //释放多余空间
return l; //返回时间复杂度
}