1 solutions

  • 0
    @ 2023-10-27 22:12:38

    难度: 黄/绿

    算法: 字符串哈希

    大量求字串,上哈希。

    哈希的具体实现过程可以看我练习 11题解,上面讲的很清楚。

    这里仅给出代码以供参考。马蜂不咋地,请见谅。

    #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

    「一本通 2.1 练习 2」Seek the Name, Seek the Fame

    Information

    ID
    38
    Time
    1000ms
    Memory
    512MiB
    Difficulty
    9
    Tags
    # Submissions
    11
    Accepted
    4
    Uploaded By