• C语言--写一个函数返回bool值,来判断给定的字符串A和B(假设都是小写字母),是否是B中的字符都存在于A中,如果是返回true,否则返回false



     一.题目描述

    写一个函数返回bool值,来判断给定的字符串A和B(假设都是小写字母),是否是B中的字符都存在于A中,如果是返回true,否则返回false。例如:

    字符串A:abcde

    字符串B:abc

    那么返回true


     二.思路分析

    定义一个长度为26的一维数组,分别代表abcde...z作为标记。


    说明:如果数组的元素是1,那么这个字母出现,如果是0,那么未出现

    遍历字符串str,因为字符串的每个元素都是字母,我们可以得到下列公式:

    str[i]-'a'==对应数组下标

    什么意思呢?比如定义一个字符串char str[i]=abc ; str[0]-'a'-->'a'-'a'==0,而这个0正好是a对应数组的下标。同样str[1]-'a'==1,正好也是b代表的数组下标。

    这个等式非常重要,在处理字母类的问题可以达到很好的效果。

    接着,我们遍历字符串A,然后把A的字母记录到数组中,出现的就赋值成1。再遍历字符串B,查看它的字符是否都有出现在A中,如果有一个字母没出现,返回false,否则返回true。

    举个例子:

    字符串A:abcd

    字符串B:abc ,应该返回true.

     三.完整代码

    1. #define _CRT_SECURE_NO_WARNINGS
    2. #include
    3. bool checkString(const char* str1, const char* str2)
    4. {
    5. int arr[26] = { 0 };
    6. for (int i = 0; str1[i] != '\0'; i++)
    7. {
    8. arr[str1[i] - 'a'] = 1;
    9. }
    10. for (int j = 0; str2[j] != '\0'; j++)
    11. {
    12. if (arr[str2[j] - 'a'] == 0)
    13. return false;
    14. }
    15. return true;
    16. }
    17. int main()
    18. {
    19. char str1[] = "ABCD";
    20. char str2[] = "ABC";
    21. if (checkString(str1, str2))
    22. printf("%s的字符都出现在%s中\n", str2, str1);
    23. return 0;
    24. }

    四.运行结果


    创作不易, 如果这份博客👍对你有帮助,可以给博主一个免费的点赞以示鼓励。
    欢迎各位帅哥美女点赞👍评论⭐收藏⭐,谢谢!!!
    如果有什么疑问或不同的见解,欢迎在评论区留言哦👀。
    祝各位生活愉快⭐

  • 相关阅读:
    NtripShare Cloud GNSS解算云平台之动态、快速静态、静态解算
    【高效办公】一、ubuntu之间共享桌面
    CSS实现竖向步骤条
    【代码随想录】刷题Day37
    什么是 SSH 密钥? 生成、身份验证、密钥对信息等
    类与对象(初级)
    KMP模式匹配算法
    小波神经网络的基本原理,小波神经网络算法原理
    UE5、CesiumForUnreal实现加载GeoJson绘制单面(Polygon)功能(StaticMesh方式)
    linux批量修改文件名及文件内容
  • 原文地址:https://blog.csdn.net/m0_75266675/article/details/134470790