python中有没有类似c++这种快速的字符串排序函数?

题目描述:

设有 n 个正整数,将他们连接成一排,组成一个最大的多位整数。
如: n = 3 时,3 个整数 13, 312, 343 连成的最大整数为 34331213。
如: n = 4 时, 4 个整数 7, 13, 4, 246 连接成的最大整数为 7424613。

输入描述:

有多组测试样例,每组测试样例包含两行

  1. 第一行为一个整数 N (N <= 100)
  2. 第二行包含 N 个数(每个数不超过 1000,空格分开)。

输出描述:

每组数据输出一个表示最大的整数。

示例 1:

# 输入
2
12 123
4
7 13 4 246
# 输出
12312
7424613

konnn 给出的 c++ 答案:

#include <string>
#include <algorithm>
#include <vector>
#include <iostream>

using namespace std;
    
int main() {
    int n; 
    cin >> n;
    vector<string> sArray;
    for (int i=0;i<n;i++) {
        string temp;
        cin >> temp;
        sArray.push_back(temp);
    }
    sort(sArray.begin(), sArray.end(), [](string s1, string s2){
        return (s1+s2) > (s2+s1);
    });
    for (auto s:sArray) {
        cout << s;
    }
    return 0;
}

python 中有没有类似这样的语句?

sort(sArray.begin(), sArray.end(), [](string s1, string s2){
    return (s1+s2) > (s2+s1);
});
阅读 2.5k
2 个回答

python2:

>>> s = ['7', '13', '4', '246']
>>> print(''.join(sorted(s, cmp=lambda x,y: int(y+x)-int(x+y))))
7424613

python3:

from functools import cmp_to_key
>>> s = ['12', '123']
>>> print(''.join(sorted(s, key=cmp_to_key(lambda x,y: int(y+x)-int(x+y)))))
12312
#!/usr/bin/python

aList = [123, 'xyz', 'zara', 'abc', 'xyz'];
aList.sort();
print "List : ", aList
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题