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

「2.1」前缀后缀——字符串哈希

 

「2.1」前缀后缀

问题背景

Seek the Name, Seek the Fame

题目描述

给定若干字符串(这些字符串总长 ≤4×10^5),在每个字符串中求出所有既是前缀又是后缀的子串长度。
例如:ababcababababcabab,既是前缀又是后缀的:ab,abab,ababcabab,ababcababababcabab。

输入格式

输入若干行,每行一个字符串。

输出格式

对于每个字符串,输出一行,包含若干个递增的整数,表示所有既是前缀又是后缀的子串长度。

样例输入1

ababcababababcabab
aaaaa

样例输出1

2 4 9 18
1 2 3 4 5

#include<bits/stdc++.h>
using namespace std;
string s;
unsigned long long h[400002],gh[400002]={1};
int len,lmax=1;
unsigned long long geth(int l,int r){return h[r]-h[l-1]*gh[r-l+1];
}
int main(){ios::sync_with_stdio(0);while(cin>>s){len=s.size();s=" "+s;for(int i=1;i<=len;i++){h[i]=h[i-1]*131+s[i];}for(int i=lmax;i<=len;i++){gh[i]=gh[i-1]*131;}lmax=max(lmax,len);for(int i=1;i<=len;i++){if(geth(1,i)==geth(len-i+1,len)){cout<<i<<" ";}}cout<<"\n";}
}


http://www.mrgr.cn/news/25769.html

相关文章:

  • 使用实时编辑器任务清理杂乱数据并定位极值
  • mysql DBA常用的sql
  • AttributeError: module ‘numpy‘ has no attribute ‘object‘.
  • C++奇迹之旅:快速上手Priority_queue的使用与模拟实现
  • FP7122:异步降压恒流LED驱动芯片
  • 022.PL-SQL进阶—分页过程
  • 如何带领一个兼职团队完成一个百万项目?
  • 【启扬方案】基于RK3588的割草机器人应用解决方案
  • C++继承
  • Leetcode面试经典150题-202.快乐数
  • 《小迪安全》学习笔记04
  • VSCode配置C++环境
  • 登山第九梯:稀疏点云实例分割——又快又准
  • 图片详解,最简单易懂!!!Ubuntu增强功能
  • 文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于攻击者视角的综合能源系统网络攻击策略 》
  • 【高性能】什么是QPS、RT?
  • 详解贪心算法
  • 外包干了三年,快要废了。。。
  • Quantlab 5.11含ETF策略年化52%以及卡玛比4.79的债券策略(全量ETF后复权数据下载)
  • 基于.NET的土特产销售系统—计算机毕业设计源码27155