Codeforce Segment Occurrences——string中substr的应用

本文介绍了一道关于字符串匹配的问题及高效解法。通过使用C++实现字符串的子串搜索,并结合前缀和思想快速计算查询区间内的匹配次数。文章详细解析了代码实现,特别是对string类的substr方法的应用。

Segment Occurrences

[题目大意]

有两个长度为m,n的字符串,以及查询次数q次;每次查询提供两个数据a&&b,问在长度为m的字符串的第a到第b个字符的区域内有多少个n这样的字符串。

[总结]

看似很水的一道题居然没做出来。发现自己对于数据的输入输出还是存在问题。看了eddy的题解,真心惊叹。除了两分多钟的AC时间还有对于string字符串的理解以及其基础函数(例如substr)的运用,以及最后对数组的处理,代码整体真的很惊艳。

[eddy题解]

出处

(直接上代码)代码倒数第三行略有错误,目前cf貌似崩了,有机会更正。

#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

const int N=1021;

int n, m, q, ans[N];
string s, t;

int main()
{
	scanf("%d%d%d", &n, &m, &q);
	cin>>s>>t;
	for(int i=0; i+m<=n; i++)
	if(s.substr(i, m) == t)
	ans[i+1]++;
	for(int i=2; i<=n; i++)
	ans[i]+=ans[i-1];
	while(q--)
	{
		int li, ri;
		scanf("%d%d", &li, &ri);
		ri=ri-m+1;
		printf("%d\n", max(0, ans[max(0,ri)]-ans[li-1]));//tiny mistake
	}
}

[题解优点]

substr———待补

// string::substr
#include <iostream>
#include <string>

int main ()
{
  std::string str="We think in generalities, but we live in details.";
                                           // (quoting Alfred N. Whitehead)

  std::string str2 = str.substr (3,5);     // "think"

  std::size_t pos = str.find("live");      // position of "live" in str

  std::string str3 = str.substr (pos);     // get from "live" to the end

  std::cout << str2 << ' ' << str3 << '\n';

  return 0;
}

来自cpp官网解释。

 

转载于:https://www.cnblogs.com/ronnielee/p/9495152.html

### 如何在 Codeforces 平台上将界面语言设置为中文 Codeforces 是一个国际化的编程竞赛平台,支持多种语言的界面显示,其中包括中文。以下是关于如何将 Codeforces 的界面语言切换到中文的具体方法: #### 1. 登录账户 用户需要先登录自己的 Codeforces 账户。如果尚未注册账户,则需完成注册流程后再进行操作。 #### 2. 进入个人资料页面 点击右上角用户名旁边的下拉菜单选项,在弹出的列表中选择 **Settings**(设置)。此部分允许用户修改各种偏好设定[^1]。 #### 3. 修改语言选项 在 Settings 页面中找到 **Language** 字段,默认可能是 English 或其他语言。通过下拉框可以选择不同的语言选项,其中包含 Simplified Chinese 表示简体中文。选择后保存更改即可生效[^2]。 #### 4. 验证更改效果 返回至首页或其他任意页面确认网站文字已转换成所选目标语言——即中文环境下的表述形式。此时所有的题目描述、公告以及交互提示都将采用中文呈现给用户阅读理解[^3]。 ```python # 示例代码展示如何模拟简单的语言切换逻辑 class UserPreferences: def __init__(self, username): self.username = username self.language = 'English' def set_language(self, new_lang): supported_languages = ['English', 'Simplified Chinese'] if new_lang in supported_languages: self.language = new_lang print(f"Language switched to {new_lang} for user {self.username}.") else: print("Unsupported language.") user = UserPreferences('example_user') user.set_language('Simplified Chinese') # 切换语言为简体中文 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值