码迷,mamicode.com
首页 > 其他好文 > 详细

codevs 2761 脏话过滤

时间:2017-04-16 21:41:34      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:end   while   style   hint   length   ted   修改   oid   bsp   

时间限制: 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 脏话过滤

标签:end   while   style   hint   length   ted   修改   oid   bsp   

原文地址:http://www.cnblogs.com/ruojisun/p/6719771.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!