专栏文章
B4435 [语言月赛 202511] 太空曼波
B4435题解参与者 2已保存评论 2
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @min1ud6z
- 此快照首次捕获于
- 2025/12/01 19:11 3 个月前
- 此快照最后确认于
- 2025/12/01 19:11 3 个月前
来源
2025 年 11 月语言月赛,由洛谷网校提供。
考察字符串。
文字题解
本题的要求非常明确,首先,我们枚举 ;再将 分为前缀 和后缀 ,并尝试将 与其他串的前缀匹配,后缀 与其他串的后缀匹配。
难点在于:如何拆分,如何匹配。
string: substr
string 类型是 C++ STL 提供的字符串模板类。其中,成员函数 substr 用于提取子串。
substr 函数需要传入两个参数,第一个参数为子串开始的下标,第二个参数为需要截取的子串长度。如果从该下标开始到字符串结束,没有这么长的子串,则在字符串末尾截断,不会出现运行时错误。
下面是一个使用示例。
CPPstring s = "abcd1234";
cout << s.substr(0, 4) << endl; // abcd
cout << s.substr(2, 3) << endl; // cd1
cout << s.substr(6, 8) << endl; // 34
使用 substr 函数,我们可以很方便的对字符串 进行拆分。枚举 的长度 ,则 的长度为 。需要注意的是,题目不允许 为空串,因此 的枚举范围应该是 。
通过 substr 函数,我们可以提取 。
CPPstring p = s[i].substr(0, l);
string q = s[i].substr(l, (int)s[i].size() - l);
之后,我们分别枚举,对 寻找匹配的串。
对于 ,我们枚举 ,需要提取 中与 相同长度的前缀,并比较它们是否相同。我们首先需要保证这个长度的前缀存在,即,需要首先比较 与 的大小,如果 ,直接跳过即可。否则,我们同样使用 substr 提取前缀。
与 同理,只不过提取的内容从前缀变为后缀。前缀提取的开始下标为 ,长度为 ;后缀提取的开始下标为 ,长度为 。
相关推荐
评论
共 2 条评论,欢迎与作者交流。
正在加载评论...