首页 > 代码库 > codevs 2761 脏话过滤
codevs 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 <string>#include <cstdio>using namespace std;bool flag;string str,a[9]={"38","250","2B","BT","TMD","PIG","SHIT","FUCK"};int ln,k=-1,wz[9],len[9]={2,3,2,2,3,3,4,4};bool vis[100+50];void find_(int pos){ int i=0; while(i<ln) { if(str[i]==a[pos][0]) { int x=0; int z=i,k=i; while(str[k]==a[pos][x]&&k<ln) {k++;x++;} if(x==len[pos]) { for(int j=z;j<=z+len[pos]-1;j++) vis[j]=1; flag=1; } } i++; }}int main(){ cin>>str; ln=str.length(); while(k<=6) find_(++k); for(int i=0;i<ln;i++) if(vis[i]) str[i]=‘*‘; cout<<str<<endl; flag==0?printf("YES"):printf("NO"); return 0;}
codevs 2761 脏话过滤
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。