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

【最短循环节问题——hash】

题目

  • 最短的循环节长度就等于 自身长度 - 最长的头尾缀匹配长度(不考虑字符串自身和自身匹配)
  • 如果不存在匹配,则最短循环节为自身,长度为 自身长度

代码

#include <iostream>
using namespace std;
using ll = long long;const int mod = 1e9+7;
const int base = 233;
const int N = 1e6+10;ll f[N], pq[N];
int n;
string s;void init_hash(string s)
{pq[0] = 1;f[0] = s[0] % mod;for(int i = 1; i < n; i++){pq[i] = pq[i-1] * base % mod;f[i] = f[i-1] * base % mod + s[i];f[i] %= mod;}
}
ll get_hash(int l, int r)
{if(l == 0) return f[r];return (f[r] - f[l-1] * pq[r-l+1] % mod + mod) % mod;
}
int main()
{cin >> n;cin >> s;init_hash(s);int ans = -1;for(int i = 0; i < n-1; i++){if(get_hash(0, i) == get_hash(n-i-1, n-1))ans = n - (i+1);}if(ans == -1) ans = n;cout << ans;return 0;
}

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

相关文章:

  • 什么是RADIUS?一文速通!
  • 算法训练第十六天
  • 蓝桥杯国赛训练 day4
  • 主流邻近标记技术解析与应用
  • 构建安全可靠的电子商务平台的综合策略
  • 基础专题(遗漏):代码颜色
  • 学习日记-day28-6.12
  • OpenCV 随机数和随机颜色
  • 单片机中面向对象的思维
  • 如何处理HTML5兼容性的问题
  • glibc
  • 数据信号处理方法三板斧
  • 会技术的产品经理
  • Keep-Alive 续集:Vue.extend 的遗产解析与优雅告别
  • 文档测试发送
  • 聚集索引与非聚集索引
  • Chapter07-信息披漏
  • Python原生爬虫教程:微店商品详情API接口攻略指南
  • 安徽省考计算机专业课笔记
  • XSS攻击概念通俗解释
  • STM32H7 SD卡使用以及其DMA读写
  • 【AI】理解神经网络原理
  • Java学习笔记之:Vue中路由的基本使用
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(34):ようですそうですばかりのに
  • 由于现在ui设计软件百花齐放,用传统的photoshop设计页面的方式正被摒弃
  • YOLOv2 技术详解:目标检测的又一次飞跃
  • 力扣100- 环形链表
  • vue-property-decorator实践(一)
  • 在 pgvector 中指定相似度搜索方法
  • 能提升30%!Infortrend普安存储自动分层增强版赋能文件共享与医疗影像