1 条题解
-
0
📝 题目大意
给定一个仅包含大小写英文字母的字符串 ,其中恰好有一个大写字母,其余均为小写字母。要求输出该大写字母在 中的位置(从 开始计数)。
💡 解题思路
- 题目分析:字符串长度 ,数据量极小。题目保证恰好有一个大写字母,因此只需找到第一个(也是唯一的)大写字母即可。
- 算法推导:遍历字符串的每个字符,使用
isupper()函数判断是否为大写字母。找到后直接输出其下标i+1(因为题目要求 -based 索引),并立即return 0结束程序。由于题目保证恰好有一个大写字母,无需处理找不到的情况。 - 边界与细节:大写字母可能出现在字符串的任意位置(开头、中间、末尾),
isupper()是 C++ 标准库<cctype>提供的函数,能正确处理所有英文字母。
⏱️ 复杂度分析
- 时间复杂度:,其中 ,最坏情况下遍历整个字符串。
- 空间复杂度:,仅用于存储输入字符串。
💻 标准代码 (C++)
#include <bits/stdc++.h> using namespace std; int main() { string s; cin >> s; // 遍历字符串,找到唯一的大写字母 for (int i = 0; i < s.size(); i++) { if (isupper(s[i])) { // isupper() 判断是否为大写字母 cout << i + 1 << endl; // 输出 1-based 位置 return 0; // 找到后直接结束 } } }
- 1
信息
- ID
- 682
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 4
- 已通过
- 3
- 上传者