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);
    }

  • 相关阅读:
    python小练习
    python学习笔记
    google测试之道读书笔记一
    webservice头部认证
    我们需要什么样的测试?
    pt-ioprofile在CentOS7上无法运行的解决办法
    推荐Nginx系列文章
    linux开启coredump的3种方法
    55, select/poll returned error
    centos ftp安装
  • 原文地址:https://www.cnblogs.com/kane0526/p/2935808.html
Copyright © 2011-2022 走看看