ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1945-祖安 say hello-String

2021-12-09 20:02:52  阅读:126  来源: 互联网

标签:cnt end String start int 祖安 remark ++ say


 1 #define _CRT_SECURE_NO_WARNINGS 1
 2 #include<bits/stdc++.h>
 3 char str[100][40];
 4 char s[1005];
 5 
 6 int remark[2000][2] = { 0 };
 7 /*第一行为一个整数 n,表示违禁词库有 n(1≤n≤100) 个。
 8 第 2 行到第 n+1 行,每行有一个字符串 s (2≤|s|≤30) 表示违禁词,且均为小写字母。
 9 第 n+2 行是一个字符串 t (2≤|t|≤1000),表示Keichi需要发送的信息,也均为小写字母。
10 其中 |s| 表示字符串 s 的长度。*/
11 
12 int main()
13 {
14     int n;
15     scanf("%d", &n);
16     for (int i = 0; i < n; i++) {
17         scanf("%s", str[i]);
18     }//type in banned words
19     scanf("%s", s);//type in a long word jugded
20     int len = strlen(s),k=0;//获得总长度
21 
22 
23     for (int i = 0; i < n; i++) {//对每一个违禁词进行判断
24         int length = strlen(str[i]);//获得违禁词长度
25         int cnt = 0;//初始化已判断过的长度
26         int flag = 1,start=0,end=0;//打星号的标记,若为真一直为1
27         for (int j = 0; j < len;) {//对长串从头到尾进行判断
28          
29                  start = j;//记录开始的位置
30                  while (s[j] == str[i][cnt] && s[j] != '\0' && cnt != length) {
31                      cnt++;
32                      j++;
33                      flag = 1;
34                  }
35     
36                 end = j;//标记结束的位置
37                 if (!cnt || flag) { j=start+1; flag = 0; }
38                 if (cnt < length) { 
39                     end = start;
40                 }
41            
42                 //把那一段划掉
43                 if (end - start > 0) {
44                     remark[k][0] = start;
45                     remark[k][1] = end;
46                     k++;
47                     //printf("[%d,%d]\n", start, end);
48                }//记录所在的区间   
49                 cnt = 0;
50 
51         }
52     }
53     for (int i = 0; i < k; i++) {
54         for (int j = *(*(remark+i)+0); j < *(*(remark + i) + 1); j++) {
55             s[j] ='*';
56         }
57     }
58     printf("%s\n", s);
59     int cnt = 0;
60     for (int i = 0; i < len; i++) {
61         while (s[i] == '*'&&cnt<2) {
62             printf("%c", s[i]);
63             cnt++;
64         }
65         if (s[i] == '*' && cnt == 2) {
66             continue;
67         }
68         printf("%c", s[i]);
69         cnt = 0;
70     }
71     printf("\n");
72     return 0;
73 }

 

标签:cnt,end,String,start,int,祖安,remark,++,say
来源: https://www.cnblogs.com/zrzsblog/p/15669047.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有