1 条题解

  • 0
    @ 2025-8-24 21:07:48

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar chen_zhe
    Aya 敲可爱的~

    搬运于2025-08-24 21:07:47,当前版本为作者最后更新于2025-05-28 13:09:06,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    欢迎报名洛谷网校,期待和大家一起进步!

    本题考察字符串。

    对于此类有不定个数的读入,我们可以使用 while (cin >> s),每次读入一个“以空格分隔”的字符串 ss

    因为读到的最后一个单词后面带着句号,因此在读入的时候,我们要检查 ss 的最后一个字符。如果是句号,就把它去掉,同时知道这是最后一个单词,准备退出循环。

    去掉句号可以使用 pop_back 函数,例如,s.pop_back() 即可直接去掉最后一个字符。你也可以使用 substr 函数。假设字符串 s 的长度为 len,那么使用 s = s.substr(0, len-1) 也可去除最后一个字符。

    接着,使用打擂台法比较字符串的长度即可完成本题。

    参考代码:

    while (cin >> s) {
        bool end = false;  
        // 如果最后一个字符是 '.', 就把它去掉,并标记结束
        int len = s.size();
        if (s[len-1] == '.') {
            s = s.substr(0, len-1);
            // 这一句话可以换成:s.pop_back(),注意不是 s = s.pop_back();
            end = true;
        }
        // 比较长度,更新最长单词
        if (s.size() > ans.size())
            ans = s;
        if (end) break; // 遇到句号,跳出循环
    }
    
    • 1

    信息

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