• 序列自动机
    for(int i=n;i;i--){
      for(int j=0;j<26;j++)
      next[i-1][j]=next[i][j];
      next[i-1][s[i]-'a']=i;
    }
  • 最大最小表示法
    int min_max_express(char *s,int len,bool flag)
    {
      int i=0,j=1,k=0;
      while(i<len&&j<len&&k<len)
       {
          int t=s[(j+k)%len]-s[(i+k)%len];
          if(t==0) k++;
          else
          {
              if(flag)
              {
                  if(t>0) j+=k+1;else i+=k+1;
              }
              else
              {
                  if(t>0) i+=k+1; else j+=k+1;
              }
              if(i==j) j++;k=0;
          }
      }return min(i,j);
    }