1 条题解
-
0
📝 题目大意
给定一个只包含大小写英文字母的字符串 ,判断其首字母是否为大写,且其余所有字母是否均为小写。
💡 解题思路
- 题目分析:字符串长度 ,数据量极小,直接模拟即可。关键在于正确理解"首字母大写 + 其余全小写"这一条件——当 时,只需判断首字母是否大写即可(不存在"其余字母")。
- 算法推导:
- 用
isupper(S[0])检查首字母是否为大写,若不是则直接判定为No。 - 遍历下标 从 到 ,用
islower(S[i])检查每个字符是否为小写,一旦发现非小写字符,立即标记ok = false并break跳出循环。 - 最后根据
ok的值输出"Yes"或"No"。
- 用
- 边界与细节:
- 长度为 时,循环体不会执行,此时只需首字母大写即为
Yes(样例 4:"A"→Yes)。 - 使用
<cctype>中的isupper/islower可避免手动判断 ASCII 范围,代码更简洁安全。 - 注意
isupper和islower对非字母字符的行为,但本题保证输入全为英文字母,无需额外处理。
- 长度为 时,循环体不会执行,此时只需首字母大写即为
⏱️ 复杂度分析
- 时间复杂度:,只需遍历字符串一次。
- 空间复杂度:,仅使用常数个变量。
💻 标准代码 (C++)
#include <iostream> #include <string> #include <cctype> using namespace std; int main() { string S; cin >> S; bool ok = true; // 检查首字母是否为大写 if (!isupper(S[0])) { ok = false; } // 检查其余字母是否均为小写 for (size_t i = 1; i < S.size(); i++) { if (!islower(S[i])) { ok = false; break; // 一旦发现非小写,提前退出 } } // 输出结果 if (ok) { cout << "Yes" << endl; } else { cout << "No" << endl; } return 0; }
- 1
信息
- ID
- 770
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者