@ninijia 在 Leetcode每日一题练习 ------ 386. 字典序排数 中发帖
从Leetcode 每日一题练习继续讨论:
386. 字典序排数
386. Lexicographical Numbers
题解
本题要求将从1-n的数字按照字典序排列,要明确字典序的含义,即将数字视为字符串,从头开始遍历字符串,对每一位的字符,字符小(ascii码小,或者理解为一般意义上的字符顺序如a-z,0-9)的即在前面,短字符串和长字符串的前缀相同,则短字符串在前面。
在遍历这样的数字过程中相当于构造了一棵树,树的每一层都是0-9,如果还可以继续产生下一层则先产生下一层并遍历。对每一层的操作都是相同的因此可以使用递归解决。这里的层就是将原来的数字乘10后对个位进行遍历,看当前产生的新数字乘10是否小于n,小于n则可以产生新的一层。在每一层的操作为:遍历0-9,遍历每个数字时与原始数字相加构成新数字,判断新数字是否小于n,小于n则将新数字乘10判断是否小于n,小于n则递归调用...