1 条题解
-
0
📝 题目大意
给定一个长度为 、仅由
o、-、x组成的字符串 ,判断是否同时满足:(1) 至少有一个o;(2) 没有x。满足输出Yes,否则输出No。💡 解题思路
- 题目分析:,数据量极小,直接遍历字符串即可。核心是检查两个布尔条件:是否存在
o以及是否存在x。 - 算法推导:
- 定义两个布尔变量
hasGood和hasBad,初始均为false。 - 遍历字符串 的每个字符
c:- 若
c == 'o',将hasGood置为true; - 若
c == 'x',将hasBad置为true。
- 若
- 遍历结束后,若
hasGood == true且hasBad == false,输出"Yes";否则输出"No"。
- 定义两个布尔变量
- 边界与细节:
- 全为
-的情况:hasGood为false,应输出No(样例 2)。 - 仅有
o的情况:hasGood为true、hasBad为false,应输出Yes(样例 3)。 - 存在
x的情况:无论是否有o,只要hasBad为true就输出No(样例 4)。 - 注意条件判断:必须是
hasGood && !hasBad,不能只检查其中之一。
- 全为
⏱️ 复杂度分析
- 时间复杂度:,遍历字符串一次。
- 空间复杂度:,仅使用常数个辅助变量。
💻 标准代码 (C++)
#include <iostream> #include <string> using namespace std; int main() { int N; string S; cin >> N >> S; bool hasGood = false; // 是否存在 "良" (o) bool hasBad = false; // 是否存在 "不可" (x) for (char c : S) { if (c == 'o') hasGood = true; // 标记有 "良" if (c == 'x') hasBad = true; // 标记有 "不可" } // 合格条件:至少一个 "良" 且没有 "不可" if (hasGood && !hasBad) { cout << "Yes" << endl; } else { cout << "No" << endl; } return 0; } - 题目分析:,数据量极小,直接遍历字符串即可。核心是检查两个布尔条件:是否存在
- 1
信息
- ID
- 699
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者