1 条题解
-
0
📝 题目大意
给定一个长度为 3 的大写字母字符串 ,判断它是否属于给定的 7 个特定字符串之一(
ACE、BDF、CEG、DFA、EGB、FAC、GBD),是则输出Yes,否则输出No。💡 解题思路
- 题目分析: 长度固定为 3,只有大写字母,且只有 7 种合法情况。输入规模极小,直接暴力比较即可。
- 算法推导:
- 观察 7 个合法字符串:它们都是从 A~G 中某个字母开始,每次向后跳过一个字母(步长为 2),在 A~G 的循环中取 3 个字符。例如
ACE是 A→C→E,DFA是 D→F→A(G 之后回到 A)。 - 等价条件:设 ,则 且 (将 A~G 映射为 0~6)。
- 但由于只有 7 种情况,std.cpp 中直接用
if列举所有合法字符串进行判断,简洁且不易出错。
- 观察 7 个合法字符串:它们都是从 A~G 中某个字母开始,每次向后跳过一个字母(步长为 2),在 A~G 的循环中取 3 个字符。例如
- 边界与细节:无特殊边界。注意字符串匹配需严格相等,大小写已限定为大写字母。
⏱️ 复杂度分析
- 时间复杂度:,最多比较 7 次,每次比较长度为 3 的字符串。
- 空间复杂度:,只存储一个长度为 3 的字符串。
💻 标准代码 (C++)
#include<bits/stdc++.h> using namespace std; int main(){ string a; cin >> a; // 直接枚举所有 7 种合法字符串进行判断 if(a=="ACE"||a=="BDF"||a=="CEG"||a=="DFA"||a=="EGB"||a=="FAC"||a=="GBD"){ cout << "Yes"; }else{ cout << "No"; } return 0; }
- 1
信息
- ID
- 728
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者