1 条题解

  • 1
    @ 2025-9-13 14:07:03

    C

    说明

    本题需统计不区分大小写时与"WOHEYEZHI"相同的字符串数量。核心思路:先过滤长度不是10的字符串(目标长度固定为10),再将剩余字符串的每个字符转为大写后与目标字符串比较,统计匹配数量。时间复杂度O(n),适合处理10^5级别的输入。

    代码

    #include <stdio.h>  
    #include <string.h>  
      
    int main() {  
        int n, count = 0;  
        scanf("%d", &n);  
      
        const char target[] = "WOHEYEZHI";  
      
        for (int i = 0; i < n; i++) {  
            char s[21];  
            scanf("%s", s);  
      
            // 先判断长度是否相同,不同则直接排除  
            if (strlen(s) != 9) continue;  
      
            // 转为大写字母  
            for (int j = 0; j < 9; j++) {  
                if (s[j]>='a') s[j]-='a'-'A';  
            }  
      
            if (!strcmp(s, target)) count++;  
        }  
      
        printf("%d\n", count);  
        return 0;  
    }
    

    C语言拓展知识

    推荐搜索:toupper函数对非字母字符的处理。

    以及一、基础知识 - UIT WIKI

    问:如果想转换字母突然忘了ASCII关系怎么办?但是又不会其他法。

    答:小写-'a'+'A' 变成 大写 大写-'A'+'a' 变成 小写

    C++

    说明

    本题逻辑与C语言一致,C++可通过string类的特性进一步简化:直接在比较时转换字符大小写,无需额外创建转换后的字符串,代码更紧凑。

    万能头文件

    #include<bits/stdc++.h> 是C++非标准头文件(竞赛常用),包含所有标准库,无需手动逐个包含,适合快速编码。

    新知识

    1. 字符串长度判断:

      • 术语:string::size()
      • 解释:string类的成员函数,直接返回字符串长度(不包含结束符),比C语言手动计算更便捷。
      • 对比:C语言需循环或strlen计算长度;C++的string可直接获取。
    2. 字符即时转换:

      • 术语:toupper()在比较中直接使用
      • 解释:无需提前转换整个字符串,可在比较时对单个字符即时转换,减少内存使用和操作步骤。
      • 对比:C语言需显式循环转换;C++可在条件判断中直接转换,代码更简洁。

    AC

    #include <bits/stdc++.h>  
    using namespace std;  
      
    int main() {  
        ios::sync_with_stdio(false);  
        cin.tie(0);  
          
        int n, cnt = 0;  
        cin >> n;  
        const string target = "WOHEYEZHI";  
          
        while(n--){  
            string s;  
            cin>>s;  
            for(char &i:s) i=toupper(i);  
            if(s==target) cnt++; //本身其实校验长度了 `s.size()`是s的长度 
        }  
          
        cout << cnt << endl;  
        return 0;  
    }
    

    C++拓展知识

    推荐搜索:C++ string与C风格字符串的转换方法、toupper在不同编译器中的实现差异。

    • 1

    信息

    ID
    488
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    (无)
    递交数
    52
    已通过
    18
    上传者