1 条题解

  • 0
    @ 2025-10-26 11:13:00

    思路分析

    1. 任务拆解: 统计子串s1在字符串s2中出现的次数。

    2. 关键点分析:

    • 使用字符串的find函数来查找子串位置
    • 需要重复查找,每次找到后从新位置继续查找
    • 统计找到的次数

    3. 步骤规划:

    • 第一步: 读取子串s1和字符串s2。
    • 第二步: 设置计数器s=0,起始查找位置q=0。
    • 第三步: 使用循环重复查找:
      • 从当前位置q开始在s2中查找s1
      • 如果找到,计数器加1,并更新查找位置为找到位置+s1的长度
      • 如果找不到,退出循环
    • 第四步: 输出统计的次数。

    4. 代码对应:

    • cin>>a; 读取子串s1
    • cin>>b; 读取字符串s2
    • int q=0, s=0; 初始化查找位置和计数器
    • while(1) 无限循环,直到找不到为止
    • if(b.find(a,q)!=-1) 检查是否找到子串
    • s++; 找到则计数器加1
    • q=b.find(a,q)+a.size(); 更新查找位置(跳过已找到的子串)
    • else break; 找不到则退出循环
    • cout<<s; 输出总次数

    简单理解: 就像在长文章中数某个词出现了多少次,找到一个就计数一次,然后从这个词后面继续找,直到再也找不到为止。

    信息

    ID
    542
    时间
    1000ms
    内存
    128MiB
    难度
    4
    标签
    (无)
    递交数
    454
    已通过
    204
    上传者