1 条题解

  • 0
    @ 2025-8-24 21:14:15

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar ShanCreeperPro
    DILL QQTeam:746219450

    搬运于2025-08-24 21:14:14,当前版本为作者最后更新于2022-10-02 17:18:59,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    B3663 [语言月赛202209] Luogu Academic 題解

    Source & Knowledge

    2022 年 9 月语言月赛,由洛谷网校入门计划/基础计划提供。

    本题考察对**字符串(std::string)**的掌握与运用。

    文字题解

    题目大意

    给定一个字符串求 luogu 字串出现了多少次。

    解析

    我们把这道题拆成 3 个步骤:读入字符串,寻找字串,输出答案。

    读入字符串

    对于字符串 std::string s,我们可以使用 std::cingetline(std::cin,s) 来读入,前者读道空格停止,后者将整行全部读入,再本题无差别。

    寻找字串

    本题字符串的大小最长为 10610^6,可以直接从头开始遍历。

    通过 s.size()s.length 得到字符串长度,从第 0 位开始遍历到 size4\textit{size} -4 位。比较第 ii 位是否是 l,第 i+1i+1 是否是 u\cdots,第 i+4i+4 位是不是 u,如果是,把答案加上 11

    为什么只要遍历到 size4\textit{size}-4​ 位呢,可以看如下字符串

    00 11 22 33 44 55 66 77 88 99
    sis_i l o v e l u o g u

    要比较字串,就要查到第 ii 位到第 i+4i+4 位是否相同,当 i=size4i=\textit{size}-4 时,则要查到第 size\textit{size} 位,所以只需要遍历到 size4\textit{size}-4 位就可以了。

    输出答案

    使用 std::coutprintf 输出答案即可。


    至此,整道题目就完成了。

    注意事项

    • 字符串下标从 0 开始;
    • 读入字符串时使用正确的读入方式。

    视频题解

    完整代码见视频题解

    • 1

    信息

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