#include <stdio.h>
#include <iostream>
#include <map>
using std::map;
/*-----------构建被删除字符串的哈希表---------------*/
//为了快速确定当前字符是否属于可删除字符,可通过构建
//可删除字符的哈希表
//此处利用了STL中的关联容器,map
map<char,int> DelCharMap;
void BuildDelCharMap(char* delchar)
{
char* pCur=delchar;
while(*pCur!='\0')
{
DelCharMap[*pCur]=1;
++pCur;
}
}
void DelCharsFromString(char* str,map<char,int>& DelCharMap)
{
char* pFirst=str;
char* pSec=str;
while(*pFirst!='\0')
{
if(DelCharMap[*pFirst])//发现要删除的字符
++pFirst;
else //未发现要删除的字符,将两个指针的数据交换
{
char temp=*pFirst;
*pFirst=*pSec;
*pSec=temp;
++pFirst;
++pSec;
}
}
*pSec='\0';
}
int main()
{
char str[]="They are students.";
char del[]="aeiou";
BuildDelCharMap(del);
DelCharsFromString(str,DelCharMap);
return 0;
}
0063
最新推荐文章于 2024-08-27 21:51:36 发布