当前位置: 首页 > ops >正文

【斤斤计较的小Z——KMP / hash】

题目

KMP代码

#include <bits/stdc++.h>
using namespace std;const int N = 1e6+10;char s[N], p[N];
int nex[N];int main()
{cin >> p+1 >> s+1;int n = strlen(s+1);int m = strlen(p+1);//思路也是一致的,只要in > 0,就尝试拯救,最后补充一次匹配,如果不行就是0,如果行就是其它for(int i = 2, j = 0; i <= m; i++){while(j && p[j+1] != p[i]) j = nex[j];if(p[j+1] == p[i]) j++; //要么nex成功,要么j=0(此时也有可能匹配)nex[i] = j;}int cnt = 0;for(int i = 1, j = 0; i <= n; i++){while(j && p[j+1] != s[i]) j = nex[j];if(p[j+1] == s[i]) j++;if(j == m){j = 0;cnt++;}}cout << cnt;
}

hash代码

#include <bits/stdc++.h>
using namespace std;
using ll = long long;const int N = 1e6+10;
char s1[N], s2[N];const int base = 233;
const int mod = 1e9+7;ll f[N], qp[N];ll get_hash(int l, int r)
{ll ret = (f[r] - f[l-1] * qp[r-l+1] % mod + mod) % mod;return ret;
}
int main()
{cin >> s1+1 >> s2+1;int m = strlen(s1+1);int n = strlen(s2+1);qp[0] = 1;for(int i = 1; i <= n; i++){qp[i] = qp[i-1] * base % mod;f[i] = f[i-1] * base % mod + s2[i];f[i] %= mod;}ll hash1 = 0;for(int i = 1; i <= m; i++){hash1 = hash1 * base % mod + s1[i];hash1 %= mod;}int cnt = 0;for(int i = 1; i + m - 1 <= n; i++){int l = i, r = i+m-1;if(get_hash(l, r) == hash1) cnt++;}cout << cnt;
}

http://www.xdnf.cn/news/13352.html

相关文章:

  • 网传西门子12亿美元收购云原生工业软件,云化PLM系统转机在协同
  • C#高级:利用反射让字符串决定调用哪个方法
  • Leetcode20 (有效的括号)
  • Windows笔记之Win11让非焦点窗口程序也能获得流畅性能的方法
  • [论文阅读] 算法 | 布谷鸟算法在声源定位中的应用研究
  • 三星手机Galaxy S24 Ultra使用adb工具关闭和开启系统更新
  • 达梦数据库 单机部署dmhs同步复制(DM8—>DM8)
  • 基于matlab/Simulink的三相四线逆变器并联系统仿真
  • SAP学习笔记 - 开发32 - 前端Fiori开发 Content Density(内容密度)
  • 代码随想录算法训练营day1
  • 【Django】性能优化-普通版
  • Oracle线上故障问题解决
  • 达梦数据库部署veri数据对比工具
  • ArcGIS中坐标系一致但图层无法重叠问题解决
  • MATLAB实现数字下变频低通滤波法
  • Java/Kotlin selenium 无头浏览器 [Headless Chrome] 实现长截图
  • OpenAI o3-Pro发布:o3 模型宣布降价80%API Key价格“跳水”,高级AI模型普及加速!
  • AI助手一键生成专业PPT(Gamma/Genspark/Kimi)
  • iOS 26 beta1 重新禁止 JIT 执行,Flutter 下的 iOS 真机 hot load 暂时无法使用
  • 8.3.1_冒泡排序
  • 支持向量机:在混沌中划出最强边界
  • OPenCV CUDA模块立体匹配------对立体匹配生成的视差图进行双边滤波处理类cv::cuda::DisparityBilateralFilter
  • vllm docker-compose 运行LLM-Research/Mistral-7B-Instruct-v0.3
  • Linux 杀进程指令详解:`kill -9 PID` 和 `kill -15 PID` 有什么区别?
  • 服务器上传或者下载在中间断网后继续上传方法
  • 【软考中级】软件设计师考试大纲
  • 新闻类鸿蒙应用功耗危机以及优化方案
  • Java反射完全指南
  • 高频面试之5Kafka
  • Mac 上使用 mysql -u root -p 命令,出现“zsh: command not found: mysql“?如何解决