zoukankan      html  css  js  c++  java
  • 字符串的最小表示法

    把一个长为len的字符串围成一个圈,然后以任意一个字符作为起点,都会产生一个新的长为len的字符串,字符串的最小表示就是所有新字符串中字典序最小的那个。

    下面这个函数就是解决这个问题的,返回值为字典序最小的串的在原串中的起始位置。

    int MinimumRepresentation(char *s,int len)   //串s[0~l-1]的最小表示位置
    {
        int i = 0, j = 1, k = 0,t;
        while (i < len && j < len && k < len)
        {
            t = s[(i+k)%l] - s[(j+k)%l];
            if (t == 0)
                      k++;     //相等的话,检测长度加1
            else 
            {
                if (t > 0)   //大于的话,s[i]为首的肯定不是最小表示,最大表示就改<
                    i += k + 1;
                else
                    j += k + 1;
                if (i == j)
                    j++;
                k = 0;
            } 
        } 
        return min(i,j);
    }

  • 相关阅读:
    RAM disk
    将2个物理磁盘做成4个逻辑卷
    LVM——基本概念
    服务器CPU架构演变过程
    IBM XIV
    011——一些貌似高逼格的词汇
    010——存储系统架构演变
    010——集群化
    009——虚拟化
    008——协议融合
  • 原文地址:https://www.cnblogs.com/kane0526/p/2935808.html
Copyright © 2011-2022 走看看