1 条题解

  • 0
    @ 2026-6-19 10:30:29

    📝 题目大意

    给定 NN 个由小写英文字母组成的字符串,判断其中是否存在任意一个字符串与 andnotthattheyou 这五个单词之一完全相同。若存在则输出 Yes,否则输出 No

    💡 解题思路

    1. 题目分析N100N \leq 100,每个字符串长度 Wi50|W_i| \leq 50,数据规模极小,无需考虑复杂算法。问题本质是判断给定集合与目标集合是否有交集。
    2. 算法推导:逐个读入字符串 WiW_i,将其与五个目标单词 (andnotthattheyou) 逐一比较。一旦匹配成功,直接输出 Yes 并结束程序(return 0 提前退出)。若遍历完所有 NN 个字符串仍未匹配,则输出 No
    3. 边界与细节
      • 注意大小写:题目保证输入仅含小写字母,目标单词也是小写,直接 == 比较即可。
      • 一旦找到匹配即可立即输出并退出,无需继续处理剩余输入,可节省时间。
      • 不要忘记最后输出 No 的情况(所有字符串都不匹配)。

    ⏱️ 复杂度分析

    • 时间复杂度O(NW)O(N \cdot |W|),其中 N100N \leq 100W50|W| \leq 50,实际运行时间可忽略不计。
    • 空间复杂度O(N)O(N),存储 NN 个字符串。实际上可以优化为 O(1)O(1)(边读边判断),但 NN 很小,无必要。

    💻 标准代码 (C++)

    #include <bits/stdc++.h>
    using namespace std;
    int main(){
      int n; cin >> n;                    // 读入字符串个数
      vector<string>w(n);                 // 存储所有字符串
      for(int i=0; n>i; i++){
        cin >> w[i];
        // 检查当前字符串是否为五个目标单词之一
        if(w[i]=="and"|| w[i]=="not" || w[i]=="that" || w[i]=="the" || w[i]=="you"){
          cout << "Yes"<< endl;           // 匹配成功,输出 Yes
          return 0;                       // 提前结束程序
        }
      }
      cout << "No" << endl;               // 遍历完所有字符串仍未匹配,输出 No
    }
    
    • 1

    信息

    ID
    693
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者