题目:
Write an alternate version of squeeze(s1,s2) that delete each character in s1 that matches any character in the string s2.
#include <stdio.h>
void squeeze(char s1[],char s2[]);
void main(){
char s1[] = "1233345";
char s2[] = "23";
squeeze(s1,s2);
printf("%s",s1);
}
void squeeze(char s1[],char s2[]){
int i,j,k,p;
i = j = k = p = 0;
for(;s1[i] != '\0';i++){
if(s1[i] == s2[k]){
p = i;
while(s1[i] == s2[k] && s1[i] != '\0' && s2[k] != '\0'){
i++;
k++;
}
if(s2[k] == '\0'){
i--;
}else{
i = p;
s1[j] = s1[i];
j++;
}
k = 0;
}
else{
s1[j] = s1[i];
j++;
}
}
s1[j] = '\0';
}
算法:s1中寻找,找到与s2第一个字符串匹配的位置,进入循环,若全部匹配则跳过这个字符串长度继续寻找,若不匹配到下一位置继续寻找。