179. 最大数
思路:我们需要提前将数组排好序,让他满足依次链接形成的数最大。细节看注释
class Solution {
public:
static bool cmp(int a,int b){
// 排序的规则就是尽可能找到不同数的地方。
//因为要决定是放在前面还是后面,所以先让两个数都复制一份。
string x,y;
x=to_string(a)+to_string(a);
y=to_string(b)+to_string(a);
int i=0,j=0;
int lena=x.size(),lenb=y.size();
//cout<<lena<<" "<<lenb<<endl;
bool flag=0;
int fz=-1;//这个标记的是为了避免死循环
while(1){
if(x[i]>y[j]){
flag=1;
break;
}else if(x[i]<y[j]){
break;
}
i++;
j++;
if(i>=lena){
if(fz==-1||fz==0){
i=0;
fz=0;
}else{
break;
}
}
cout<<i<<" "<<j<<endl;
if(j>=lenb){
if(fz==-1||fz==1){
j=0;
fz=1;
}else{
break;
}
}
}
if(flag==1) return true;
else return false;
}
string largestNumber(vector<int>& nums) {
string s="";
sort(nums.begin(),nums.end(),cmp);
//如果第一个元素就是0,那么直接输出0即可
if(nums[0]==0) return "0";
for(int i=0;i<nums.size();i++){
s+=to_string(nums[i]);
}
return s;
}
};