1 条题解

  • 0
    @ 2025-8-24 22:32:15

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Eason_AC
    Remember? / AFOed on 2022.6.14 / 彻底死咯

    搬运于2025-08-24 22:32:15,当前版本为作者最后更新于2021-07-07 07:58:44,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    Content

    科学论文会大量引用一些早期的著作,因此在一个论文中出现两种不同的命名约定并不少见。这两种不同的命名约定分别是:

    • 长变体,由每个作者姓氏的完整单词由连字符连接而成,例如 Knuth-Morris-Pratt
    • 短变体,仅由每个作者姓氏的第一个字符拼接而成,例如 KMP

    现在,你发现了一篇论文中同时使用了长变体和短变体这两种命名约定,你想编写一个程序,将所有的长变体变为短变体。

    数据范围:字符串长度不超过 100100

    Solution

    供题人在此谢罪,一开始没有把长变体中的每个单词开头一定是大写字母这个条件翻译上来,但貌似并不影响?如果没有翻译出来这个条件,也只需要将每个连字符 - 后的字符或第一个字符直接拿出来拼在一起就好了。

    当然,有了长变体中的每个单词开头一定是大写字母这个条件之后,这道题目就非常简单了。在 cctype/ctype.h 库里面有一个 isupper() 函数,它可以判断当前的字符是否是一个大写字母。于是,我们直接遍历整个字符串,逢大写字母就输出即可。

    Code

    下面的代码是 COCI 官方给出的代码。

    #include <string>
    #include <iostream>
    #include <cctype>
    
    using namespace std;
    
    int main() {
    	string a;
    	cin >> a;
    	for (int i = 0; i < (int)(a.size()); i++)
    		if (isupper(a[i]))
    			cout << a[i];
    	return 0;
    }
    
    • 1

    信息

    ID
    7039
    时间
    1000ms
    内存
    32MiB
    难度
    1
    标签
    递交数
    1
    已通过
    1
    上传者