• PAT B1029


    PAT B1029


    这道题主要有两个问题需要解决:

    • 如何在不区分大小写的情况下判断第一个字符串中有哪些字符串没有在第二个中出现
    • 如何确保同一个字符(不区分大小写)只输出一次,且英文均用大小写输出

    解决步骤

    1. 对于枚举c1 c2 ,如果是小写字母,则先转换成大写字母,再进行对比。如果相等,说明这个字符在第二行字符中出现过,不予输出。如果不等,则继续枚举,如果c1无法在第二行字符串中找到相等的字符串,则将c1输出。
    2. 对于第二个问题,我们设置一个bool型hashTable[128]来表示字符是否已经输出。

    注意事项

    • 空格也作为需要判断的字符串
    • 大小写不区分,且小写需要转换成大写形式
    • hashTable的大小只要能把题目给出的字符串包括即可,我们用ascii码的个数128为其数组长度
    #include <cstdio>
    #include <cstring>
    
    int main() {
        char str1[100], str2[100];
        bool hashTable[128] = {false};
        fgets(str1, 100, stdin);
        fgets(str2, 100, stdin);
        int len1 = strlen(str1);
        int len2 = strlen(str2);
        for (int i = 0; i < len1; i++) {
            int j;
            char c1, c2;
            for (j = 0; j < len2; j++) {
                c1 = str1[i];
                c2 = str2[j];
                if (c1 >= 'a' && c1 <= 'z') c1 -= 32;
                if (c2 >= 'a' && c2 <= 'z') c2 -= 32;
                if (c1 == c2) break;
            }
            if (j == len2 && hashTable[c1] == false) {
                printf("%c", c1);        //在第二个字符串中未出现c1,且c1未被输出过
                hashTable[c1] = true;
            }
        }
        return 0;
    }
    
  • 相关阅读:
    响应式布局
    bootstrap--前端开发框架
    ADO.NET Entity Framework
    dns
    自动完成脚本
    一个Banner广告收缩效果
    对联广告2
    蓝色经典的对联广告代码
    Js弹性漂浮广告代码
    jquery悬停tab2
  • 原文地址:https://www.cnblogs.com/Kirarrr/p/10332228.html
Copyright © 2020-2023  润新知