字典序算法
给定一个排列,如 "aazz" ,求按照字典排列方式的下一个字符,这里是:"azaz".
以 "aazz" 为例,字典序的算法步骤如下:
- 从右至左遍历,找出第一个左邻小于右邻的字符,记下位置 left;
本例中为 'a', left = 1;
- 再次从右至左遍历,找出第一个比 str[left] 大的字符,记下位置为 right;
本例中为 'z', right = 3;
- 交换 str[left] 和 str[right]
本例变成:'azaz';
-
将 left 以后的字符按照从小到大排列。
-
重复上述过程
结束条件: 如果第一步中,找不到左邻小于右邻的字符,则说明已经是字典序的最后一个排列了。