首页 > 代码库 > [两个指针]删除字符串中指定的字符

[两个指针]删除字符串中指定的字符

删除字符串中指定的字符

输入 char *a = "abc123";

   char *del = "a13";

 

利用两个字符指针的方式,pslow,pfast;

char *pslow,*pfast;

两个指针一开始都指向字符串的开始位置;

pfast开始遍历字符串,

if(*pfast==指定字符){////这里疑惑的地方就是,pslow什么时候向前滑行

  将pfast所指字符,移到pslow的位置(就是赋值操作,*pslow = *fast)

  pslow++;

      pfast++;

}else{

  pfast++;

}

 

///==================

#include <iostream>#include <stdio.h>#include <cstdio>#include <string>#include <string.h>#include <vector>#include <map>#include <unordered_map>#include <unordered_set>#include <algorithm>#include <list>#include <limits.h>#include <set>//#include "xiaozhao.h"#include <numeric>#include <bitset>#include <iomanip>#include <queue>#include <math.h>#include <sstream>#include <stdio.h>#include <list>#include <stack>using namespace std;char TheArray[256];void InitTheArray(const char* p){    while(\0!=*p){        TheArray[*p++] = 1;    }}void ProcessTheString(char *szDestination){    char *pFast;    char *pSlow;    pFast = pSlow = szDestination;    while(\0!=*pFast){        if(0==TheArray[*pFast]){            *pSlow=*pFast;            pSlow++;            pFast++;        }else{            pFast++;        }    }///while    *pSlow = \0;}///Processint main(){    //Cxiao c;    //c.test();    //freopen("input.txt", "r", stdin);    char szDes[] = "they are students.";    char szFind[] = "aeiou";    InitTheArray(szFind);    ProcessTheString(szDes);    printf("%s\n",szDes);   return 0;}

 

[两个指针]删除字符串中指定的字符