0x00 问题
一个题目:
给一组长短不一的数字,求这组数字前后链接能组成的最大整数。
如87 879 8787组成最大整数为8798787
0x01 思路
解题思路:
类比排序,按一定的比较方法比较大小,最大的在最前面,依次排列就可以组成最大整数。
那么这里的关键是两个输入数字的比较函数的定义。定义如下:
- 逐位比较两个输入数字,出现更大的数字者返回较大
- 如果两个输入数字中较短数字是另一个数字的前导,则递归比较较长数字的剩余部分和共同部分
对2举个例子:
**比较87878和87**:
第一次比较,87为前导相同部分,则比较878和87;87又相同,则比较8和87;相同部分是8,故比较剩余7和相同部分8,所以结果返回87878<87
显然8787887>8787878
0x02 代码
这里只写比较函数
1 | def compare(intStr1, intStr2): |