B3976 [语言月赛 202405] 交题解 题解

· · 题解

Source & Knowledge

2024 年 5 月语言月赛,由洛谷网校入门计划/基础计划提供。

题目大意

给定一个字符串,请你去除所有非英文字母的字符,输出结果。

题目分析

首先,你需要知道什么是 ASCII 码。简单来说,就是所常见的一些英文字符,标点符号等都有一个对应的 int 值。

对于英文字母来说,所有大写字母的值按照字母顺序单调递增,所有小写字母的值按照字母顺序单调递增

回到题目。如何判断一个字符 c 是否是英文字母?如果是英文字母,那么 c 既可以是大写也可以是小写,满足下面任意一条即可。

这里是用 ASCII 码的值进行比较大小。

因此可以得出解法。首先,读入这个字符串:

string s;
cin >> s;

然后直接循环遍历每一个位置上的字符。对于位置 i 上的字符 s_i,直接用上面两条去判断是否是英文字母。如果是英文字母,则直接输出即可;否则直接忽略:

for(int i = 0; i < s.size(); i++) {
    if((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z'))
        cout << s[i];
}

视频讲解