三级
C++ 算法考级专栏
真题分析、矩阵探测、递归回溯与基础语法
🎨 视觉封面【GESP】C++三级练习 luogu-B3769 [语言月赛202305] 制糊串
📅 2025-06-04·✍️ OneCoder·计算中...·⏱️ 7 分钟
#GESP#C++#字符串
GESP C++三级练习,字符串截取练习,难度★★☆☆☆。
luogu-B3769 [语言月赛202305] 制糊串
题目要求
题目背景
在这个问题中,我们用 表示从字符串 的第 个字符到第 个字符连起来构成的字符串。例如,若 ,则 。
题目描述
给出两个字符串 和 ,有 次询问。
每次给出 和 ,请判断 和 谁的字典序更小。
输入格式
第一行是一个字符串 。
第二行是一个字符串 。
第三行是一个整数,表示询问次数 。
接下来 行,每行四个整数 ,表示一次询问。
输出格式
对每次询问,输出一行一个字符串:
- 如果 的字典序更小,请输出 >。
- 如果 的字典序更小,请输出 >。
- 如果两者的字典序一样大,请输出 。
输入输出样例 #1
输入 #1
PLAINTEXT
Yifusuyi
yifusuYi
3
1 2 7 8
1 2 1 2
7 8 7 8
输出 #1
PLAINTEXT
ovo
yifusuyi
erfusuer
说明/提示
数据规模与约定
以下用 表示 的长度, 表示 的长度。
- 对 的数据,。
- 对 的数据,。
- 对 的数据,,,。输入字符串仅含大小写英文字母。
题目分析
解题思路
本题的解题思路如下:
-
问题分析:
- 输入两个字符串 和 ,以及查询次数
- 每次查询给出四个整数 ,表示需要比较的子串范围
- 需要比较 和 的字典序大小
-
解题方法:
- 核心思路:
- 使用 string 的 substr 函数截取子串
- 直接使用字符串比较运算符比较字典序
- 根据比较结果输出对应字符串
- 实现方式:
- 读取两个原始字符串 和
- 循环处理 次查询
- 每次查询截取并比较子串
- 核心思路:
-
实现要点:
- 字符串长度范围:
- 查询次数范围:
- 子串范围合法:,
- 字符串只包含大小写英文字母
复杂度分析:
- 时间复杂度:,其中q为查询次数,L为最大子串长度
- 空间复杂度:,需要存储原始字符串和子串
示例代码
CPP
#include <iostream>
#include <string>
int main() {
// 声明两个字符串变量s和t用于存储输入的字符串
std::string s, t;
// 声明整型变量q用于存储查询次数
int q;
// 读取输入的两个字符串和查询次数
std::cin >> s >> t >> q;
// 循环处理q次查询
for (int i = 0; i < q; i++) {
// 声明四个整型变量用于存储查询的起止位置
int l1, r1, l2, r2;
// 读取每次查询的四个位置参数
std::cin >> l1 >> r1 >> l2 >> r2;
// 从字符串s中截取子串,注意下标从0开始,所以要减1
std::string s_sub = s.substr(l1 - 1, r1 - l1 + 1);
// 从字符串t中截取子串
std::string t_sub = t.substr(l2 - 1, r2 - l2 + 1);
// 比较两个子串的字典序
if (s_sub < t_sub) {
// s的子串字典序更小
std::cout << "yifusuyi" << std::endl;
} else if (s_sub > t_sub) {
// t的子串字典序更小
std::cout << "erfusuer" << std::endl;
} else {
// 两个子串字典序相等
std::cout << "ovo" << std::endl;
}
}
return 0;
}
💡 OneCoder 资源指引
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
🤝 技术交流与答疑
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
📚
猜你想读 · 相关文章推荐
GESP 编程与算法 · 三级⏱️ 3 分钟
【GESP】C++三级练习BCQM3091,选择题判定
GESP三级字符串string和一级知识点if-else分支语句练习,非常基础,对于我孩子来说练习重点在一级部分,字符串只是碰巧遇到了。
阅读全文 →
GESP 编程与算法 · 三级⏱️ 4 分钟
【GESP】C++三级练习 luogu-B2109 统计数字字符个数
GESP三级练习,字符串练习(C++三级大纲中6号知识点,字符串),难度★✮☆☆☆。
阅读全文 →
GESP 编程与算法 · 三级⏱️ 4 分钟
【GESP】C++三级练习 luogu-B2110 找第一个只出现一次的字符
GESP三级练习,字符串和数组练习(C++三级大纲中5号知识点,一维数组和6号知识点,字符串),难度★★☆☆☆。
阅读全文 →
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com
💬 读者留言与交流
还没有留言,快来成为第一个讨论者吧!