删除字符子串

1. 简述

    从一个字符串中,删除另一个字符串中出现过的所有字符。基本上比较简单,主要就是要保存的字符放到合适的位置,要删除的字符最后要释放掉,还有就是'\0'的处理。

2. 代码  

#include <iostream>
using namespace std;

bool find(const char* cs, const char ch) {
  assert(cs 
!= 0); 
  
while('\0' != *cs && ch != *cs)
    cs
++;
  
if('\0' == *cs)
    
return false;
  
else 
    
return true;
}

void delete_str(char *str, const char* cs) {
  assert(str 
!= 0 && cs != 0);
  
char * result = str;
  
int gap, len; gap = len = 0
  
while(*str != '\0') {
    
if(find(cs, *str)) { // 放弃该字符
      gap++// 删除的字符个数
    }
    
else { // 保存该字符
      len++// 保留的字符个数
      *(str-gap) = *str;
    }
    str
++;
  }
  
*(result+len) = '\0'// '\0'处理
  for(int i=0; i<gap; i++// 释放内存
    delete (result+len+i+1);
}

int main() {
  
char str[100= {'h''e''l''l''o'',''w''o''r''l''d''.'};
  
char cs[5= "lo";
  cout 
<< str << endl;
  cout 
<< cs << endl;
  delete_str(str, cs);
  cout 
<< str << endl;
  system(
"PAUSE");
  
return 0;
}

3. 备注

    主要考查基本的C++编程,难度不大。

posted @ 2011-08-19 20:56  xiaodongrush  阅读(433)  评论(1编辑  收藏  举报