1 条题解
-
0
📝 题目大意
给定一个长度为 、仅由
M(男性)和F(女性)组成的字符串 ,判断是否存在相邻两个字符相同的情况。若不存在,输出Yes;否则输出No。💡 解题思路
- 题目分析:,数据量极小, 扫描即可。核心条件是"不存在相邻的男性或相邻的女性",等价于 对所有 成立。
- 算法推导:遍历 到 (std.cpp 中为
i < n - 1),检查 与 是否相等。一旦发现相等,立即输出No并结束程序(return 0)。若循环正常结束,说明所有相邻字符均不同,输出Yes。 - 边界与细节:
- 时,循环条件
i < 0不成立,直接跳过循环,输出Yes——一个人自然满足"交替排列"。 - 字符串仅含
M和F,无需处理其他字符。 - 注意下标从 0 开始,循环到
n - 2即可。
- 时,循环条件
⏱️ 复杂度分析
- 时间复杂度:,只需一次线性扫描。
- 空间复杂度:,存储输入字符串。
💻 标准代码 (C++)
#include <bits/stdc++.h> using namespace std; int main () { int n; char s[100005]; cin >> n >> s; // 读入 N 和字符串 S for (int i = 0; i < n - 1; i++) { // 遍历每对相邻字符 if (s[i] == s[i + 1]) { // 若相邻两字符相同 printf("No"); // 不满足交替排列,输出 No return 0; // 直接结束程序 } } printf("Yes"); // 所有相邻字符均不同,输出 Yes return 0; }
- 1
信息
- ID
- 701
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者