1 class Solution {
2 public:
3 string largestNumber(vector<int>& nums) {
4 string s;
5 if(nums.empty())
6 return s;
7 bool flag =false;
8 for(int i=0; i<nums.size(); ++i)
9 {
10 flag = false;
11 for(int j=1; j<nums.size()-i; ++j)
12 {
13 if(catcmp(nums[j-1], nums[j]))
14 {
15 flag = true;
16 swap(nums[j-1], nums[j]);
17 }
18 }
19 if(flag == false)
20 break;
21 }
22 if(nums[nums.size()-1] == 0)
23 return "0";
24 for(int i=nums.size()-1; i>=0; --i)
25 s += itos(nums[i]);
26 return s;
27 }
28 string itos(int n)
29 {
30 string s;
31 if(n==0)
32 return "0";
33 while(n != 0)
34 {
35 s += n%10 +'0';
36 n = n/10;
37 }
38 int i=0, j=s.size()-1;
39 while(i<j)
40 {
41 swap(s[i], s[j]);
42 i++;
43 --j;
44 }
45 return s;
46 }
47 bool catcmp(int n1, int n2)
48 {
49 if(((itos(n1)+itos(n2))> (itos(n2)+itos(n1))))
50 return true;
51 else return false;
52 }
53 };