1 solutions
-
0
难度: 黄/绿
算法: 字符串哈希
大量求字串,上哈希。
哈希的具体实现过程可以看我练习 的题解,上面讲的很清楚。
这里仅给出代码以供参考。马蜂不咋地,请见谅。
#include<bits/stdc++.h> using namespace std; typedef unsigned long long ll; ll n,b=1e9+7,p[400010],h[400010],x,y; string s; int main(){ p[0]=1; for(int i=1;i<=4e5;i++) p[i]=p[i-1]*b; while(cin>>s){ n=s.length(); s="*"+s; for(ll i=1;i<=n;i++) h[i]=h[i-1]+s[i]*p[i]; for(ll i=1;i<=n;i++){ x=h[i]; y=h[n]-h[n-i]; if(x*p[n-i]==y) printf("%llu ",i); } printf("\n"); } return 0; }
- 1
Information
- ID
- 38
- Time
- 1000ms
- Memory
- 512MiB
- Difficulty
- 9
- Tags
- # Submissions
- 11
- Accepted
- 4
- Uploaded By