脏话过滤
2761 脏话过滤
时间限制: 1 s
空间限制: 8000 KB
题目等级 : 白银 Silver
题目描述 Description
某论坛希望打造文明论坛,对于每个帖子需要将脏话换成*输出。
脏话有38,250,2B,BT,TMD,PIG,SHIT,FUCK。
若没有一个脏字,则此人文明。
否则不文明。
对于有重叠部分的脏话需全部替换。
输入描述 Input Description
字符串
输出描述 Output Description
修改字符串
是否文明(YES或NO)。
样例输入 Sample Input
322BBBTTFUCPIGKSHITMDD8
样例输出 Sample Output
32**B**TFUC***K******D8
NO
数据范围及提示 Data Size & Hint
字符串长度<=100.只有数字和大写字母。
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #define MAXN 40005 using namespace std; int main() { char s[110]; int ss[110]; cin>>s; int n=strlen(s); bool flag=true; for(int i=0; i<n; i++) ss[i]=1; for(int i=0; i<n; i++) { if((s[i]=='3')&&(s[i+1]=='8')) { ss[i]=ss[i+1]=0; flag=false; } if((s[i]=='2')&&(s[i+1]=='5')&&(s[i+2]=='0')) { ss[i]=ss[i+1]=ss[i+2]=0; flag=false; } if((s[i]=='2')&&(s[i+1]=='B')) { ss[i]=ss[i+1]=0; flag=false; } if((s[i]=='B')&&(s[i+1]=='T')) { ss[i]=ss[i+1]=0; flag=false; } if((s[i]=='T')&&(s[i+1]=='M')&&(s[i+2]=='D')) { ss[i]=ss[i+1]=ss[i+2]=0; flag=false; } if((s[i]=='P')&&(s[i+1]=='I')&&(s[i+2]=='G')) { ss[i]=ss[i+1]=ss[i+2]=0; flag=false; } if((s[i]=='S')&&(s[i+1]=='H')&&(s[i+2]=='I')&&(s[i+3]=='T')) { ss[i]=ss[i+1]=ss[i+2]=ss[i+3]=0; flag=false; } if((s[i]=='F')&&(s[i+1]=='U')&&(s[i+2]=='C')&&(s[i+3]=='K')) { ss[i]=ss[i+1]=ss[i+2]=ss[i+3]=0; flag=false; } } for(int i=0; i<n; i++) { if(ss[i]==1) cout<<s[i]; else cout<<"*"; } cout<<endl; if(flag) cout<<"YES"; else cout<<"NO"; return 0; }