一、算法描述
给定一个字符串和模式字符串,要求将出现在模式字符串的字符在原字符串中删除。
二、算法思路
从题面理解,常规思路是遍历原字符串和模式字符串,将原字符串的每个字符和模式串的每个字符比较,如果比较相等,则不输出,其时间复杂度为O(m*n),m和n各自为字符串和模式字符串的长度;另一种高效的思路是以空间换时间,借助hash数组,标记模式字符串中每个出现的字符,hash数组以字符的ascii码值为下标,所以其大小一般为256,然后遍历原字符串,判断字符是否在hash数组中,不在的话则输出。
三、算法代码
下面给出这种方法的代码
#include#include using namespace std;//o(m*n),m=>string length, n==>pat lengthvoid del_pat_char(char *s,int n,const char *pat){ int i=0,j=0; int lp=strlen(pat); for(i=0;i =lp) { cout<