本周周赛未能按时参加,因此本篇仅作题目的思考记录以及分析,不涉及成绩总结。

第一题:处理字符串

题目描述:

给定一个由大小写字母构成的字符串,请你对该字符串进行如下处理:
- 将所有大写字母替换为相应的小写字母。
- 删除其中的所有元音字母。
- 在每个辅音字母前面插入一个 .。
字母 a,o,y,e,u,i 为元音字母,其余字母均为辅音字母。
注意,y 其实是半元音字母,在本题中规定其为元音字母。

本题是惯例的签到题,无难度,直接按照题目给定的要求来做即可,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>

using namespace std;

int main()
{
string s;
cin >> s; //输入

for(int i = 0; i < s.size(); i ++) // 转换为小写
s[i] = tolower(s[i]);

string res = "";
for(int i = 0; i < s.size(); i ++) //删去元音并在其余字符前添加 '.'
{
char t = s[i];
if( t == 'a' || t == 'e' || t == 'i' || t == 'o' || t == 'u' || t == 'y')
continue;
else
{
res += '.';
res += s[i];
}
}

cout << res << endl; // 输出答案

return 0;
}
第二题:图中的环

题目描述:

给定一个 n 个点 m 条边的无向图。
点的编号从 1 到 n。
图中不含重边和自环。
请你对给定图进行判断,如果该图是一个有且仅有一个环的连通图,则输出 YES,否则输出 NO。