1945-祖安say hello-string

1945-祖安say hello-string_第1张图片

 

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

 

你可能感兴趣的:(1945-祖安say hello-string)