《C程序设计语言》 练习2-4
Posted jerryleesir
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《C程序设计语言》 练习2-4相关的知识,希望对你有一定的参考价值。
问题描述
重新编写函数squeeze(s1,s2),将字符串s1中任何与字符串s2中字符匹配的字符都删除。
Write an alternate version of squeeze(s1,s2)
that deletes each character in the string s1
that matches any character in the string s2
.
解题思路
这里有两种思路:
第一种就是将s1字符串的字符,一个一个的去和s2的全部字符对比,一旦发现有重复的,比如s1中的第5个字符与s2中的某个字符重复,我们就把s1中,从第六个字符(包括第六个)之后的全部字符往前移动一位,这样第五个字符就被覆盖了,如同被删除。
第二种也是要对比两个字符串,举个例子来解释这种方法,
例如s1中的第一个字符没有在s2中出现过,就将这个字符存到s1的第一个位置
再对比s1中第二个字符,如果这个字符在s2中也有,那么就不做任何操作
再对比s1中第三个字符,如果s2中没有这个字符,那么就将这个字符存进s1的第二个字符中
以此类推,最后给s1的最后一个位置存一个‘ ‘
其原理就是将不与s2重复的字符重新储存进s1中
方法一代码:
1 #include<stdio.h> 2 #define MAXLEN 1024 3 4 void squeeze(char s1[] , char s2[]); 5 void getlines(char array[], int maxlen); 6 7 int main() 8 { 9 char s1[MAXLEN],s2[MAXLEN]; 10 getlines(s1,MAXLEN); 11 getlines(s2,MAXLEN); 12 squeeze(s1,s2); 13 printf("%s",s1); 14 return 0; 15 } 16 17 void squeeze(char s1[] , char s2[]) 18 { 19 int i=0,j=0; 20 for ( i = 0; s1[i]!=‘