字典序算法

给定一个排列,如 "aazz" ,求按照字典排列方式的下一个字符,这里是:"azaz".

以 "aazz" 为例,字典序的算法步骤如下:

  • 从右至左遍历,找出第一个左邻小于右邻的字符,记下位置 left;

本例中为 'a', left = 1;

  • 再次从右至左遍历,找出第一个比 str[left] 大的字符,记下位置为 right;

本例中为 'z', right = 3;

  • 交换 str[left] 和 str[right]

本例变成:'azaz';

  • 将 left 以后的字符按照从小到大排列。

如果第一步中,找不到左邻小于右邻的字符,则说明已经是字典序的最后一个排列了。

标签: 算法

添加新评论