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;
}
}

LeetCode OJ:Largest Number(最大数字)的更多相关文章

  1. 【LeetCode】Largest Number 解题报告

    [LeetCode]Largest Number 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/largest-number/# ...

  2. Leetcode:Largest Number详细题解

    题目 Given a list of non negative integers, arrange them such that they form the largest number. For e ...

  3. JavaScript中sort方法的一个坑(leetcode 179. Largest Number)

    在做 Largest Number 这道题之前,我对 sort 方法的用法是非常自信的.我很清楚不传比较因子的排序会根据元素字典序(字符串的UNICODE码位点)来排,如果要根据大小排序,需要传入一个 ...

  4. [LeetCode][Python]Largest Number

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com'https://oj.leetcode.com/problems/largest ...

  5. [LeetCode] 179. Largest Number 最大组合数

    Given a list of non negative integers, arrange them such that they form the largest number. Example ...

  6. Java 特定规则排序-LeetCode 179 Largest Number

    Given a list of non negative integers, arrange them such that they form the largest number. For exam ...

  7. leetcode 179. Largest Number 求最大组合数 ---------- java

    Given a list of non negative integers, arrange them such that they form the largest number. For exam ...

  8. 【leetcode】Largest Number ★

    Given a list of non negative integers, arrange them such that they form the largest number. For exam ...

  9. Java for LeetCode 179 Largest Number

    Given a list of non negative integers, arrange them such that they form the largest number. For exam ...

  10. [leetcode]179. Largest Number最大数

    Given a list of non negative integers, arrange them such that they form the largest number. Input: [ ...

随机推荐

  1. 自定义gradle plugin

    最近开始接触gradle 正好有个需求apidoc

  2. AWK Demo

    AWK is so poweful. AWK功能太强大了: @1:处理格式化文本(感觉主要还是以这个为主) @2:对文本逐行进行处理(过滤某些行,保留符合条件的) @3:将文件根据不同的条件分成多个文 ...

  3. C# 截屏函数

    截屏函数: using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; ...

  4. python常用模块——os模块

    python编程时,经常和文件.目录打交道,这就离不开os模块,os模块包含普遍的操作系统功能,与具体的平台无关,列举一些常用的命令. 1.os.name:字符串指示你正在使用的平台.windows是 ...

  5. HDU 1159 Common Subsequence(POJ 1458)

    Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...

  6. Kattis - register 【水】

    题意 就是 有一堆容器,然后可以执行加的操作,每个容量是 2, 3, 5, 7, 11, 13, 17, 19 然后 有进位 比如第一个 容器,到2了,就会重置为0,然后 下一个容器+ 1, 但是要保 ...

  7. sequence.c

    /* * sequence.c */ #include <stdio.h> #include <memory.h> /* * SM3算法产生的哈希值大小(单位:字节) */ # ...

  8. $.queue() 与 $.dequeue() -- 队列

    JQuery 运用队列为动画模块服务,但好像它应该有更多用处,我觉得的,那试试就知道咯. 简单的来讲,它就是形成队列和出列, 也就因此可以进行很有规律的回调和延时了呀(暂停感觉有难度),当然这就是后面 ...

  9. Linux图像系统框架-理解X11与Qt的层次结构

    转:http://blog.csdn.net/kjfureone/article/details/52848550 1. 前言 图形子系统是linux系统中比较复杂的子系统之一:对下,它要管理形态各异 ...

  10. OS路径模块命令

    os.remove():删除指定文件os.rmdir():删除指定目录os.mkdir():创建单级目录os.makedirs():创建多级目录os.listdir(dirname):列出dirnam ...