zoukankan      html  css  js  c++  java
  • 最小表示法

    字符串的最小表示法

    定义:如果一个字符串可以循环:如0011100111000110具有这种性质的字符串,那么它一定有一种或者多种最小表示法使得该字符串的字典序最小。

    解法:

    设三个指针i,j,k;初始化i=0,j=1,k=0;先找到 i+k 和 j+k 的第一个不同的位置下标,那么不同位置之前一定不是最小表示法,因为两个不相等一定有一个比较小,比较更新 i 或者 j 即可。

    show code:

    int getmin(char *s)
    {
        int len=strlen(s);
        int i=0,j=1,k=0,t;
        while(i<len && j<len && k<len){
            t=s[(i+k)%len]-s[(j+k)%len];
            if (!t) k++;
            else{
                if (t>0) i=i+k+1; 
                else j=j+k+1;
                if (i==j) j++;
                k=0;
            }
        }
        return i<j?i:j;
    } 
    
  • 相关阅读:
    VS自带的诊断工具
    Electron学习
    PC跨*台
    .NET调试学习
    Mac使用
    SSL/TLS
    UKey学习
    授权机制OAuth、JWT
    代理服务器
    .NET相关源码查找
  • 原文地址:https://www.cnblogs.com/StungYep/p/12251951.html
Copyright © 2011-2022 走看看