《C程序设计语言》 练习2-4

2021-01-24 22:14

阅读:547

标签:cpp   bsp   mat   解释   highlight   hat   就是   编写   包括   

问题描述

  重新编写函数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的最后一个位置存一个‘\0‘

    其原理就是将不与s2重复的字符重新储存进s1中

 

方法一代码:

 

 1 #include 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]!=\0; i++)
21     {
22         for ( j=0; s2[j]!=\0; j++)
23         {
24             if (s1[i]==s2[j])
25             {
26                 int k=i;
27                 while (s1[k]!=\0)
28                 {
29                     s1[k]=s1[k+1];
30                     k++;
31                 }
32                 j=-1;
33                 s1[k]=\0;
34             }
35         }   
36     }
37 }
38 void getlines(char array[], int maxlen)
39 {
40     int c,i;
41     for ( i = 0; i 1 && (c=getchar())!=EOF&&c!=\n; i++)
42     {
43         array[i] = c;
44     }
45     if (c==\n)
46     {
47         array[i++] = c;
48     }
49     array[i] = \0;
50 }

 

 

方法二代码:

 

#include
#define MAXLEN 100

void getlines(char array[],char maxlen)
{
    int i,c;
    for ( i = 0; i 

 

  

执行结果

技术图片

 

 

 

 

 

 

欢迎大家关注我的微信公众号:农大CPU

 

  

《C程序设计语言》 练习2-4

标签:cpp   bsp   mat   解释   highlight   hat   就是   编写   包括   

原文地址:https://www.cnblogs.com/jerryleesir/p/12863551.html

上一篇:快速排序

下一篇:腐蚀膨胀-算法


评论


亲,登录后才可以留言!