题目:给出N个正整数,如 {7, 959, 95, 71, 1}, 求将这些数连接起来所组成的最大的数,即959957711。
变形:给出N个由0...9组成的字符串(开头可能为零),求将这些字符串连接起来,所组成的最大(最小)的数。
解:排序一下,然后拼接就OK了。重点在比较函数的实现上。
方法I:比较函数在比较两个数时,从高位到低位循环比较,如代码所示。
方法II:比较函数在比较两个数A和B时,比较其拼接后的结果,即比较AB和BA,证明可见《剑指offer》。
代码(含C++11特性):
#include <vector>
#include <string>
#include <algorith