Largest Number--LeetCode

偏执的太偏执、 2022-08-07 12:58 280阅读 0赞

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.

思路:最后的总长是一定的,把每个整数转换为字符串,字符串排序,合并字符串

  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4. #include <vector>
  5. using namespace std;
  6. string itostr(int num)
  7. {
  8. int temp = num;
  9. string result;
  10. for(;temp != 0;)
  11. {
  12. result += (temp%10)+'0';
  13. temp /=10;
  14. }
  15. result.reserve();
  16. return result;
  17. }
  18. string largestNumber(vector<int> &num)
  19. {
  20. vector<string> str(num.size());
  21. string result;
  22. int i,tmp;
  23. for(i=0;i<num.size();i++)
  24. {
  25. str[i] = itostr(num[i]);
  26. }
  27. sort(str.begin(),str.end());
  28. for(i=str.size()-1;i>=0;i--)
  29. result += str[i];
  30. return result;
  31. }
  32. int main()
  33. {
  34. int array[] ={3, 30, 34, 5, 9};
  35. vector<int> vec(array,array+sizeof(array)/sizeof(array[0]));
  36. cout<<largestNumber(vec);
  37. system("pause");
  38. return 0;
  39. }

发表评论

表情:
评论列表 (有 0 条评论,280人围观)

还没有评论,来说两句吧...

相关阅读