赞
踩
蒜头君快要考托福了,这几天,蒜头君每天早上都起来记英语单词。花椰妹时不时地来考一考蒜头君:花椰妹会询问蒜头君一个单词,如果蒜头君背过这个单词,蒜头君会告诉花椰妹这个单词的意思,不然蒜头君会跟花椰妹说还没有背过。单词是由连续的大写或者小写字母组成。注意单词中字母大小写是等价的。比如You
和you
是一个单词。
首先输入一个n(1≤n≤100000) 表示事件数。接下来 n 行,每行表示一个事件。每个事件输入为一个整数 d 和一个单词word(单词长度不大于 20),用空格隔开。如果 d=0,表示蒜头君记住了 wordword 这个单词,如果 d=1,表示这是一个 测试,测试蒜头君是否认识单词 word(花椰妹永远不会告诉蒜头君这个单词的意思)。事件的输入是按照时间先后顺序输入的。
对于花椰妹的每次 测试,如果蒜头君认识这个单词,输出一行Yes
, 否则输出一行No
。
样例输入1
5 0 we 0 are 1 family 0 Family 1 Family样例输出1
No Yes样例输入2
4 1 jisuanke 0 Jisuanke 0 JISUANKE 1 JiSuanKe样例输出2
No Yes
分析:
1.由于题目提示You,you是一样,则需要将容器里的字符串全部转化为小写或者大写
使用函数:transfom;
2.分析题意得:当d=1的时候需要查询容器里有没有这个单词,有则yes,无则no;
d=0时则放入容器;很多容器都可以完成这道题
- //ou_fan
- #include<bits/stdc++.h>
- using namespace std;
- set<string>arr;
- int main() {
- string s;
- int t;
- cin >> t;
- while (t--) {
- int n;
- cin >> n>>s;
- transform(s.begin(), s.end(), s.begin(), ::tolower);//容器内单词转为小写
- if (n == 0) {
- arr.insert(s); //注意set的类型,否则会报错
-
- }
- else {
- if (arr.count(s)) cout << "Yes" << endl;
- else cout << "No" << endl ;
- }
- }
- return 0;
- }
我调试了半天;原因出在transform函数的使用错误;
transform只可以作用于string类型容器;不可作用于set容器;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。