问题描述:删除字符串1中所有的在字符串2中出现的字符。例如,str1="aaabbbaaacccddd",str2="ac",删除操作后"bbbddd"。
最简单的方法1的思路:对所有str2中的字符,依次取出一个字符,并在str1中扫描所有出现的相同字符,每当遇到一个相同字符时,当前字符后的所有字符从前到后都向前移动一个单位。
方法2:减少移动的次数。
#include<stdio.h>
void deleteLetters(char str[], char letters[]) {
for(int i=0; letters[i]; i++) {
char letter=letters[i];
for(int j=0,k=0; str[j]; j++)
if(str[j]!=letter) { str[k++]=str[j]; }
str[k]=0;
}
}
int main(void) {
char a[100], b[10];
gets(a);
gets(b);
deleteLetters(a, b);
puts(a);
return 0;
}
方法3:减少移动的次数,并引入哈希函数取消扫描。
#in