1 条题解
-
0
自动搬运
来自洛谷,原作者为

ShiRoZeTsu
AFOed搬运于
2025-08-24 21:16:19,当前版本为作者最后更新于2024-05-20 17:48:41,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
Source & Knowledge
2024 年 5 月语言月赛,由洛谷网校入门计划/基础计划提供。
题目大意
给定一个字符串,请你去除所有非英文字母的字符,输出结果。
题目分析
首先,你需要知道什么是 ASCII 码。简单来说,就是所常见的一些英文字符,标点符号等都有一个对应的 int 值。
对于英文字母来说,所有大写字母的值按照字母顺序单调递增,所有小写字母的值按照字母顺序单调递增。
回到题目。如何判断一个字符 是否是英文字母?如果是英文字母,那么 既可以是大写也可以是小写,满足下面任意一条即可。
- 如果是大写字母,那么 一定满足
'A' <= c && c <= 'Z'; - 如果是小写字母,那么 一定满足
'a' <= c && c <= 'z'。
这里是用 ASCII 码的值进行比较大小。
因此可以得出解法。首先,读入这个字符串:
string s; cin >> s;然后直接循环遍历每一个位置上的字符。对于位置 上的字符 ,直接用上面两条去判断是否是英文字母。如果是英文字母,则直接输出即可;否则直接忽略:
for(int i = 0; i < s.size(); i++) { if((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z')) cout << s[i]; }视频讲解
- 如果是大写字母,那么 一定满足
- 1
信息
- ID
- 9938
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者