情书————字符串

说多了都是泪,因为重复定名,改了一个小时~

题目背景

一封好的情书需要撰写人全身心的投入。CYY同学看上了可爱的c**想对她表白,但却不知道自己写的情书是否能感动她,现在他带着情书请你来帮助他。

题目描述

为了帮助lin_toto,我们定义一个量化情书好坏的标准感动值。判断感动值的方法如下:

1.在情书的一句话中若含有给定词汇列表中的特定单词,则感动值加1,但每一单词在同一句话中出现多次感动值不叠加,不同单词不受影响。保证输入的单词不重复。

2.每句话以英文句号定界。

3.全文不区分大小写。

输入输出格式

输入格式:
第一行包含一个数字n,表示导致感动值提升的词汇列表中单词的数量,随后n行是给定单词,每行一个。保证单词只包含英文字母。

最后一行为情书正文,保证只包含以下几种字符: 英文字母、数字、空格、英文逗号、英文句号。

输出格式:
一个数字g,表示情书带来的感动值。

输入输出样例

输入样例#1: 复制
3
love
so
much
I love you so much.
输出样例#1: 复制
3
说明

对于所有的数据,保证1 ≤ n,m,k ≤ 100,每个单词不超过50字符,全文不超过1000字符。

没什么说的,map容器超神

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<map>
using namespace std;
int l,n,flag=0,ans=0,r;
string w,st[1000],s;
 map<string,int> m,book;
void zhuan(string &c)
{
    r=c.length();
    for(int i=0;i<r;i++)
    {
        if(c[i]>='A'&&c[i]<='Z')
        {
            c[i]=c[i]+'a'-'A';
        }
    }
}
int main()
{  
   string huan,p;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {cin>>s;
     zhuan(s);
     m[s]=1;
     //cout<<m[s]<<" "<<endl;
    }
    getline(cin,huan);
    getline(cin,p);

    l=p.length();
    for(int i=0;i<l;i++)
    {
        if(p[i]!='.'&&p[i]!=' '&&p[i]!=',')
        w.push_back(p[i]);
        else 
        { zhuan(w);
          //cout<<w<<" ";
        if(m[w]==1&&book[w]==0)
        {   

            st[flag++]=w;
            book[w]=1;
            ans++;
        }
         w="";
        }
        if(p[i]=='.')
        { 
            for(int i=0;i<flag;i++)
            book[st[i]]=0;
            for(int i=0;i<flag;i++)
            st[i]="";
            flag=0;
        }
    }
    printf("%d",ans);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值