就是給你一堆數(shù)字,要求組合成一個(gè)新的數(shù)字稀蟋,要求新的數(shù)字最大.解決方法:
其實(shí)可以定義一個(gè)排序函數(shù)期吓,對(duì)于輸入a和b,返回ab和ba的大小焰檩。
我的解決方法
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
using namespace std;
int getLen(int number){
int len = 0;
while (number)
{
len++;
number /= 10;
}
return len;
}
bool MySort(int a, int b){
int lenA = 0;
int lenB = 0;
lenA = getLen(a);
lenB = getLen(b);
return (a + b * pow(10, lenA)) < (b + a * pow(10, lenB));
}
class Solution {
public:
string largestNumber(vector<int> &num) {
vector<int> k;
int m = 0;
for (int i = 0; i < num.size(); ++i){
if (num[i] != 0){
k.push_back(num[i]);
}
else{
m++;
}
}
sort(k.begin(), k.end(), MySort);
string result;
for (int i = 0; i < k.size(); ++i){
result += to_string(k[i]);
}
for (int i = 0; i < m; ++i){
result += '0';
}
if (result.front() == '0'){
result = "0";
}
return result;
}
};
int main(){
Solution solution;
vector<int> a{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
solution.largestNumber(a);
return 0;
}