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.

这题也是属于那种算法很重要的那种题目,一开始拿到题目我头都大了,想想怎么样才能够正确的分析出来哪个比哪个大种种情况,后来实在想不出来,看了下别人写的,原来可以是暴力

一点,直接对每个组合组成的数字进行比较(当然是两个两个数字之间),然后排个序,直接相加得到的就是最大的数了。代码如下,实现比较容易:

 class Solution {
public:
string largestNumber(vector<int>& nums) {
stringstream ss;
vector<string> numStr;
numStr.clear();
ss.str("");
int sz = nums.size();
for(int i = ; i < sz; ++i){
ss << nums[i];
numStr.push_back(ss.str());
ss.str(""); //清空ss
}
sort(numStr.begin(), numStr.end(), Compare);
string ret = "";
for(int i = ; i < sz; ++i){
ret += numStr[i];
}
if(ret[] == '')
ret = "";
return ret;
} static bool Compare(string s1, string s2)
{
string res1 = s1 + s2;
string res2 = s2 + s1;
return res1 > res2;
}
};

java版本的如下所示,由于String的处理比较方便,可以直接的将Int型转换成一个String,Comparator对象使用起来也较为容易,代码如下所示:

 public class Solution {
public String largestNumber(int[] nums) {
int sz = nums.length;
String [] numStr = new String[sz];
for(int i = ; i < sz; ++i){
numStr[i] = String.valueOf(nums[i]);
}
Arrays.sort(numStr, new Comparator<String>(){ //这里就不用单独的去创造一个函数对象了,直接new一个使用就可以了
public int compare(String s1, String s2){
String tmp1 = s1+s2;
String tmp2 = s2+s1;
return tmp2.compareTo(tmp1);
}
});
String ret = new String("");
for(int i = ; i < sz; ++i){
ret += numStr[i];
}
if(ret.charAt() == '')
ret = "";
return ret;
}
}

最新文章

  1. parseInt实例详解
  2. 部分Android手机拍照后照片被旋转的解决方案
  3. 软件打包为exe NSIS单文件封包工具V2.3
  4. iOS 常用的向上,向下取整, 四舍五入函数
  5. Unity3d 引擎原理详细介绍
  6. 磁盘操作- inode/Block深入实战
  7. &lt;td colspan=&quot;2&quot; &gt; 一个td占两个 td空间
  8. img元素底部有空白间距的问题
  9. 在网页标题栏上和收藏夹显示网站logo
  10. Android app 别用中文名
  11. 聊聊css盒子模型
  12. Html5 Canvas Hit Testing
  13. java Socket 列子 一些参数设置比较全
  14. 基于visual Studio2013解决C语言竞赛题之1056素数序列
  15. Eclipse导入Hadoop源码项目及编写Hadoop程序
  16. bzoj 1488: [HNOI2009]图的同构
  17. JVM难学?那是因为你没认真看完这篇文章
  18. 使用SQLsever批量查询TXT文本中的值
  19. vue搭建多页面开发环境
  20. android studio设置窗口颜色和字体

热门文章

  1. 0405-服务注册与发现-客户端负载均衡-Ribbon 同Eureka使用,Ribbon脱离Eureka使用
  2. Django CSRF 原理分析
  3. linux练习命令
  4. Java底层代码实现多文件读取和写入
  5. 防止iframe被别的网站引用
  6. Qt打包过大
  7. 新建maven web后controller不能被扫描到
  8. shell运行java/Jar 脚本
  9. Apache Phoenix基本操作-1
  10. 80X86寄存器详解&lt;转载&gt;