Largest Number--LeetCode
Given a list of non negative integers, arrange them such that they form the largest number. For example, given [3, 30, 34, 5, 9]
, the largest formed number is 9534330
. Note: The result may be very large, so you need to return a string instead of an integer.
思路:最后的总长是一定的,把每个整数转换为字符串,字符串排序,合并字符串
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
string itostr(int num)
{
int temp = num;
string result;
for(;temp != 0;)
{
result += (temp%10)+'0';
temp /=10;
}
result.reserve();
return result;
}
string largestNumber(vector<int> &num)
{
vector<string> str(num.size());
string result;
int i,tmp;
for(i=0;i<num.size();i++)
{
str[i] = itostr(num[i]);
}
sort(str.begin(),str.end());
for(i=str.size()-1;i>=0;i--)
result += str[i];
return result;
}
int main()
{
int array[] ={3, 30, 34, 5, 9};
vector<int> vec(array,array+sizeof(array)/sizeof(array[0]));
cout<<largestNumber(vec);
system("pause");
return 0;
}
还没有评论,来说两句吧...