1 条题解
-
0
📝 题目大意
给定一个由小写英文字母组成的字符串 ,找出字符
a最后一次出现的位置(从 开始编号)。若a不存在,则输出 。💡 解题思路
- 题目分析:,数据量极小,直接 遍历即可。核心是找"最后一次出现的位置",等价于从右向左找到第一个
a的位置。 - 算法推导:
- 使用 C++ 标准库函数
s.rfind('a'),它从字符串末尾向前搜索,返回a最后一次出现的下标(-indexed)。 - 若
pos == string::npos,说明a不存在,输出 。 - 否则,将下标 转换为 -indexed 输出。
- 使用 C++ 标准库函数
- 边界与细节:
- 字符串长度至少为 ,不会出现空串。
- 当
a出现多次时(如样例aaaaa),rfind天然返回最后一个位置,无需额外处理。 - 注意返回值转型:
rfind返回size_t(无符号),与string::npos比较后再做+1运算,避免无符号溢出。
⏱️ 复杂度分析
- 时间复杂度:,其中 。
- 空间复杂度:,仅需存储字符串本身。
💻 标准代码 (C++)
#include<bits/stdc++.h> using namespace std; int main() { string s; cin >> s; // 从右向左查找字符 'a' 的最后一次出现位置(0-indexed) int pos = s.rfind('a'); // 若未找到,输出 -1;否则输出下标 +1(转为 1-indexed) cout << (pos == string::npos ? -1 : pos + 1) << endl; return 0; } - 题目分析:,数据量极小,直接 遍历即可。核心是找"最后一次出现的位置",等价于从右向左找到第一个
- 1
信息
- ID
- 650
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者