1 条题解
-
0
📝 题目大意
给定一个长度为奇数的小写英文字符串 ,输出其正中间的字符。中间字符定义为字符串从前往后数第 个字符。
💡 解题思路
- 题目分析: 的长度为奇数(),只需找到中间位置并输出对应字符。字符串下标从 0 开始,需将题目中的 1-based 索引转换为 0-based 索引。
- 算法推导:题目定义的中间字符位置为 (1-based)。在 0-based 索引的 C++ 字符串中,该位置对应下标 。由于 是奇数,整数除法
|S|/2恰好等于 ,因此直接输出s[s.size()/2]即可。 - 边界与细节:当 时,
s.size()/2 = 0,输出唯一字符,结果正确。注意使用s.size()而非s.length(),两者等价,标准代码使用前者。
⏱️ 复杂度分析
- 时间复杂度:,仅需读取字符串并输出单个字符。
- 空间复杂度:,存储长度为 的输入字符串。
💻 标准代码 (C++)
#include <bits/stdc++.h> using namespace std; int main(){ string s; cin >> s; // 读入长度为奇数的字符串 cout << s[s.size()/2] << endl; // 整数除法:s.size()/2 即为中间字符的 0-based 下标 }
- 1
信息
- ID
- 637
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者