一尘不染

查找给定字符串的下一个更大排列的算法

algorithm

我想要一个有效的算法来找到给定字符串的下一个更大的排列。


阅读 213

收藏
2020-07-28

共1个答案

一尘不染

维基百科上有一篇关于词典顺序生成的不错的文章。它还描述了生成下一个排列的算法。

报价:

在给定排列之后,以下算法按字典顺序生成下一个排列。它就地更改给定的排列。

  1. 找到最高指数i,使得s[i] < s[i+1]。如果不存在这样的索引,则该排列为最后的排列。
  2. 找到最高指数j > i,使得s[j] > s[i]。这样一个j必须存在,因为i+1是这样的指标。
  3. s[i]与交换s[j]
  4. 反转索引之后i直到最后一个元素的所有元素的顺序。
2020-07-28