int n=strlen(s+1); for(int i=1;i<=n;i++) s[n+i]=s[i]; int i=1,j=2,k; while(i<=n&&j<=n) { for(k=0;k<n&&s[i+k]==s[j+k];k++); if(k==n) break; if(s[i+k]>s[j+k]) { i=i+k+1; if(i==j) i++; } else { j=j+k+1; if(i==j) j++; } } ans=min(i==j); //B[ans]为最小表示 B为1~n,n+1~2n为s的字符串
最小表示
猜你喜欢
转载自www.cnblogs.com/ChildeZhe/p/12209959.html
今日推荐
周排行