1 //O(n) 2 char s[N],ss[N*2]; 3 int n=strlen(s+1); 4 for(int i=1;i<=n;i++) 5 ss[i+n]=s[i]; 6 int i=1,j=2,k; 7 while(i<=n && j<=n){ 8 for(k=0;k<n && s[i+k] == s[j+k]; k++); 9 if(k==n) break; 10 if(s[i+k]>s[j+k]){ 11 i=i+k+1; 12 if(i==j) 13 i++; 14 } 15 else{ 16 j=j+k+1; 17 if(i==j) 18 j++; 19 } 20 } 21 int ans=min(i,j); 22 //b[ans] 即最小表示
原文地址:https://www.cnblogs.com/hhyx/p/12556502.html
时间: 2024-10-12 03:37:33