最小(大)表示法

简介: 最小(大)表示法

给定一个字符串,把它首尾相连形成字符环,然后从某个点开始的字符串字典序最小,为该字符串的最小表示

最小最大的区别就是在第9行的>和<符号

最小

int mininum(char sec[]) {
  int n=strlen(sec);
  int k=0,i=0,j=1;
  while(k<n&&i<n&&j<n) {
    if(sec[(i+k)%n]==sec[(j+k)%n]) {
      k++;
    } 
    else { 
      sec[(i + k) % n] > sec[(j + k) % n] ? i = i + k + 1 : j = j + k + 1;
      if (i == j) j++;
      k = 0;
    }
  }
  i=min(i,j);
  return i;
}

最大

int mininum(char sec[]) {
  int n=strlen(sec);
  int k=0,i=0,j=1;
  while(k<n&&i<n&&j<n) {
    if(sec[(i+k)%n]==sec[(j+k)%n]) {
      k++;
    } 
    else { 
      sec[(i + k) % n] <sec[(j + k) % n] ? i = i + k + 1 : j = j + k + 1;
      if (i == j) j++;
      k = 0;
    }
  }
  i=min(i,j);
  return i;
}


目录
相关文章
|
8月前
|
算法 机器人 测试技术
【动态规划】【前缀和】【推荐】2463. 最小移动总距离
【动态规划】【前缀和】【推荐】2463. 最小移动总距离
|
算法
把数组里面数值排成最小的数
把数组里面数值排成最小的数
39 1
|
8月前
|
算法 测试技术 C#
【线段树 区间位运算模板】3117划分数组得到最小的值之和
【线段树 区间位运算模板】3117划分数组得到最小的值之和
wustojc5001求若干整数的最大值
wustojc5001求若干整数的最大值
71 0
|
8月前
leetcode:908. 最小差值 I
leetcode:908. 最小差值 I
35 0
|
算法 测试技术 C#
C++二分查找算法的应用:最小好进制
C++二分查找算法的应用:最小好进制
|
算法 索引
LeetCode——908. 最小差值 I
LeetCode——908. 最小差值 I
106 0