需要将快速排序算法修改为可以对字符串的字典序进行排序的方式。有一个问题是这里的快速排序必须先从右往左,应该是边界问题,还没细看。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def minNumber(self, nums: List[int]) -> str:
def qsort(l, r):
if l >= r: return
i, j = l, r # dual pointers
while i < j:
while s[j] + s[l] >= s[l] + s[j] and i < j: j -= 1
while s[i] + s[l] <= s[l] + s[i] and i < j: i += 1
s[i], s[j] = s[j], s[i]
s[l], s[i] = s[i], s[l]
qsort(l, i-1)
qsort(i+1, r)

s = [str(n) for n in nums]
qsort(0, len(s) - 1)
return ''.join(s)