- 刷题遇到的一些小技巧
将输入大写转小写
1
2
3
4string sentenct;
getline(cin, sentenct);
// up -> low
transform(sentenct.begin(),sentenct.end(),sentenct.begin(),::tolower);string按空格分离字符串
1
2
3
4
5
6string str;
getline(cin, str);
istringstream in(str);
while (in >> str) {
keywordsToId[str].insert(id);
}vector二维向量初始化
下面定义的是行为r,列为c的二维数组1
vector<vector<int>> ans(r, vector<int>(c));
A1047 Student List for Course
思路:用vector
直接存储数据
1 | #include <cstdio> |
注意:要用printf作为输出,不然会超时。
A1063 Set Similarity
思路:set存储不重复值,交集并集运算。
1 | #include <stdio.h> |
一次过
1060 Are They Equal
思路:太难了,细节直接拉满,典型的string题,没什么套路
1 | #include <cstdio> |
这里犯了一个极大的错误,str.size() , 但我的str是引用,导致我的每次earse都会减小size,循环会提前退出。以及全是0的判断,位数补齐要补零,不然也会出错。
1100 Mars Numbers
思路:直接打表,string和int的对应关系。
1 | #include <cstdio> |
注意,13 26 这样的数只会出现高位,低位的零会舍弃。
A1054 The Dominant Color
思路:map<int, int> 映射像素和数量的关系,当超过半数,则输出。```
1 | #include <stdio.h> |
思路好难想到。
A1071 Speech Patterns
思路:判断有效单词,并截取,map进行统计。
1 | #include <stdio.h> |
注意:开始时加了sentence += “”是为了处理下面for循环的边界问题,不然测试点4过不了。
A1022 Digital Library
思路:建立map映射,查询就变成了o(1).
1 | #include <cstdio> |
注意,用set可以直接得到排序的结果,用vector还要用sort。用int接受id的话,输出要前面补零,否则测试点3 4过不了。