DzzOffice 小胡团队

欢迎广大开发者提供技术贡献与交流

团队介绍

DzzOffice 小胡团队是因为喜爱“DzzOffice”而自发聚集的外部开发者。在DzzOffice的使用过程中,我们对软件进行必要的调整和改进,以使其更符合用户的需求和使用习惯。通过二次开发,我们可以进一步优化DzzOffice的功能和性能,提高用户的使用体验和效率。如果您对DzzOffice的使用有任何疑问或建议,欢迎随时与我们联系,我们将竭诚为您服务。同时,我们也欢迎更多的朋友加入到DzzOffice的开发和建设中来,共同推动这个平台的进步和发展。让我们一起为更好地服务用户、提升DzzOffice的应用价值而努力!

成为我们的一员

🌟加入DzzOffice小胡团队,与我们共创未来!🌟

📢 志同道合的你,是时候加入小胡团队了!

🤝你是否因为热爱DzzOffice而渴望贡献力量?是否期望在软件优化、功能拓展上施展才华?那么,欢迎你加入小胡团队!

📣我们是一支充满激情的外部开发者队伍,源于对DzzOffice的深厚感情。我们致力于通过二次开发,让这款出色的办公套件更贴合用户需求,释放更多潜能!

🔥现在,我们诚挚地邀请你成为我们的一员:

  1. 开发者:用你的智慧和技术能力为DzzOffice添砖加瓦。

  2. 报告者:及时反馈使用问题和建议,助我们不断完善产品。

  3. 观察者:关注我们的动态,分享见解与建议。

🔄 为什么选择加入小胡团队?

  1. 个性化定制:我们专注于DzzOffice的个性化调整,根据用户习惯优化功能和性能。

  2. 持续学习:在团队中,你可以不断学习新技能,提升自己的开发能力。

  3. 共享价值:携手推动DzzOffice的进步,实现个人和团队价值的双重提升。

📦 你将为DzzOffice带来什么?

  • 独特的功能改进:提交你的创意和建议,让DzzOffice更加完善。

  • 持续的技术支持:对用户提出的问题提供有效的解决方案。

  • 专业的团队交流:与小胡团队共同探讨技术和开发趋势。

💡 如何加入小胡团队?

很简单,只需点击以下链接即可加入:登录 - Gitee.com

🔔 加入我们,开启共创之旅!

小胡团队期待你的到来,一起在DzzOffice的征程上留下浓墨重彩的一笔!

贡献指南

非常欢迎和感谢参与贡献,关于DzzOffice 笔记方面的贡献,请访问DzzOffice 笔记文档中查看DzzOffice 笔记征集。关于代码方面的贡献,请先选择您希望提交的仓库,然后进行代码提交。

您可以进行以下工作(包括但不限于):

  • 纠正拼写和语法错误

  • 完善注释

  • 修复bug

  • 开发优化功能

  • 编写文档

  • 分享教程和博客文章

在开始新功能开发或功能改进之前,请先提交问题以供团队讨论。关于bug修复,请直接提交拉取请求。

关于代码提交(pull request

返回您的仓库页面,创建拉取请求(Pull request)并将其提交至原始仓库的“Developer”分支。

Pull request帮助:Pull Request 代码协作 | Gitee 帮助中心

然后,请耐心等待我们的审核(Review)。如有变更请求(Change Request),请在本地进行修改并再次提交。

提交拉取请求至相应仓库或笔记文档,您将有机会成为DzzOffice 小胡团队的贡献者!

好的,这是一个字符串匹配问题,可以使用哈希和二分的方法来解决。具体思路如下: 1. 定义一个哈希函数,将字符串转换为一个唯一的哈希值。 2. 定义一个二分函数,用来判断重复部分的长度。 3. 对于第一个字符串的每一个前缀,计算其哈希值,并将其存储在一个哈希表中。 4. 对于第二个字符串的每一个后缀,计算其哈希值,并在哈希表中查找是否有相同的哈希值。 5. 如果有相同的哈希值,则调用二分函数,判断重复部分的长度,并更新最大值。 6. 最后输出最大值即可。 下面是一份示例代码,供你参考: ```c++ #include <iostream> #include <string> #include <unordered_map> using namespace std; typedef long long LL; const LL P = 131; // 哈希函数中的质数 const int MAXN = 100010; // 字符串最大长度 int n, m; string s1, s2; LL h[MAXN], p[MAXN]; // 哈希函数和幂次 // 计算字符串的哈希值 LL get_hash(string &s) { LL res = 0; for (int i = 0; i < s.length(); i++) { res = (res * P + s[i]) % LLONG_MAX; } return res; } // 二分函数,判断重复部分的长度 int check(int len) { unordered_map<LL, int> hash; // 哈希表 int res = 0; LL h1 = 0, h2 = 0; // 分别表示第一个字符串和第二个字符串的哈希值 p[0] = 1; for (int i = 1; i <= len; i++) { h1 = (h1 * P + s1[i - 1]) % LLONG_MAX; h2 = (h2 + s2[m - i] * p[i - 1]) % LLONG_MAX; p[i] = p[i - 1] * P % LLONG_MAX; } hash[h1] = len; // 将第一个字符串的前缀哈希值存储到哈希表中 for (int i = len + 1; i <= n; i++) { h1 = (h1 * P + s1[i - 1]) % LLONG_MAX; // 计算下一个前缀的哈希值 h1 = (h1 - s1[i - len - 1] * p[len]) % LLONG_MAX; // 减去上一个前缀的哈希值 if (h1 < 0) h1 += LLONG_MAX; // 防止负数出现 if (hash.count(h1)) { // 如果哈希表中有相同的哈希值 int j = hash[h1]; if (i - j <= len) { // 判断是否为重复部分 res = max(res, i - j); } } h2 = (h2 * P + s2[m - i + len]) % LLONG_MAX; // 计算下一个后缀的哈希值 h2 = (h2 - s2[m - i] * p[len]) % LLONG_MAX; // 减去上一个后缀的哈希值 if (h2 < 0) h2 += LLONG_MAX; // 防止负数出现 hash[h2] = i; // 将后缀的哈希值存储到哈希表中 } return res; } int main() { cin >> s1 >> s2; n = s1.length(); m = s2.length(); int l = 0, r = min(n, m); while (l < r) { // 二分查找最长重复部分的长度 int mid = (l + r + 1) / 2; if (check(mid) >= mid) { l = mid; } else { r = mid - 1; } } cout << l << endl; // 输出最长重复部分的长度 return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小胡2024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值