Java
测试点6超时,其他随机超时
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<String> list = new ArrayList<>();
int n = scanner.nextInt();
for (int i = 0; i < n; i++) {
list.add(scanner.next());
}
list.sort((o1, o2) -> (o1 + o2).compareTo(o2 + o1));
StringBuilder sb = new StringBuilder();
for (String str : list) {
sb.append(str);
}
int cnt = 0;
while (cnt < sb.length() && sb.charAt(cnt) == '0') {
cnt++;
}
if (cnt == sb.length()) {
System.out.println("0");
} else {
for (; cnt < sb.length(); cnt++) {
System.out.print(sb.charAt(cnt));//去除前面的0
}
}
}
}
C++
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 10010;
int n;
string s[N];
bool cmp(string a, string b) {
return a + b < b + a;
}
int main() {
cin >> n;
for (int i = 0; i < n; ++i) cin >> s[i];
sort(s, s + n, cmp);
string res;
for (int i = 0; i < n; ++i) res += s[i];
while (res[0] == '0') res = res.substr(1);
if (res.empty()) res = "0";
cout << res << endl;
return 0;
}