• XTU-OJ 1281-Cute String


    题目描述

    Alice的记忆力不太好,如果一个句子中含的单词(每个单词之间用一个空格隔开)数量超过10,或者句子中字母种类(不区分大小写)超过10个,她就会记不住。现在给你若干个句子,请写个程序判断一下Alice是否能记住这些句子。

    输入

    存在多个样例。
    每行输入一个字符串,表示句子。字符串长度不超过200,只含英文字母和空格。
    输入数据保证每个单词之间只有一个空格,行末没有空格。

    输出

    对于每个样例,能记住,输出“Yes”,否则输出“No”。

    样例输入

    Alice is a smart girl
    but she is bad in memory
    a b c d e f g h i j
    A B C D E F G H I J K
    

    样例输出

    Yes
    No
    Yes
    No

    解题思路:gets() 输入,数组遍历

     本题一不知道输入长度,二字符串中又有空格,所以    scanf("%c"),scanf("%s") 好像都不能用,所以要换 gets() 输入,而又问 好像我以前的代码 都会加一个 scanf() != EOF 这次为什么 是 gets() != NULL 了?因为 scanf() 和 gets() 都有一个返回值,而两者返回值类型又是不一样的,具体的自行查找。

    输入之后,剩下的只需要遍历一遍数组,记录 出现的空格数 和 出现过的字符种类数。如果任意一个超过条件,则输出 No,否则输出 Yes。

    AC代码:

    1. #include
    2. #include
    3. int cnt1, cnt2, len;
    4. char str[210];
    5. int main()
    6. {
    7. while ( gets(str) != NULL)
    8. {
    9. bool books[30] = {0};
    10. cnt1 = cnt2 = 0;
    11. len = strlen(str);
    12. for (int i = 0; i < len; i ++)
    13. {
    14. if (str[i] == ' ') {cnt1 ++; continue;}
    15. if (str[i] >= 97) str[i] -= 32; // ASCII码,统一字符为大写
    16. if (!books[str[i]-'A']) cnt2 ++;
    17. books[str[i]-'A'] = true;
    18. }
    19. if (cnt1 >= 10 || cnt2 >= 11)
    20. puts("No");
    21. else puts("Yes");
    22. }
    23. return 0;
    24. }

  • 相关阅读:
    mysql 锁解决的办法
    $nextTick解决echarts宽度固定为100%的问题
    FiscoBcos使用Go调用合约
    神经网络在科研中的应用,神经网络技术及其应用
    开源的代名词「GitHub 热点速览」
    Nginx:尚硅谷2022版Nginx笔记
    MYSQL入门与进阶(五)
    elasticsearch 认识
    Qt5.15:MinGW64位编译Oracle 19c数据库驱动及代码测试 - 安装时没有选Sources处理办法
    ARM汇编学习录 3 - 调试/编译
  • 原文地址:https://blog.csdn.net/Jay_is_Chou/article/details/133875902