• LeetCode OJ:Largest Number(最大数字)


    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 class Solution {
     2 public:
     3     string largestNumber(vector<int>& nums) {
     4         stringstream ss;
     5         vector<string> numStr;
     6         numStr.clear();
     7         ss.str("");
     8         int sz = nums.size();
     9         for(int i = 0; i < sz; ++i){
    10             ss << nums[i];
    11             numStr.push_back(ss.str());
    12             ss.str(""); //清空ss
    13         }
    14         sort(numStr.begin(), numStr.end(), Compare);
    15         string ret = "";
    16         for(int i = 0; i < sz; ++i){
    17             ret += numStr[i];
    18         }
    19         if(ret[0] == '0')
    20             ret = "0";
    21         return ret;
    22     }
    23 
    24     static bool Compare(string s1, string s2)
    25     {
    26         string res1 = s1 + s2;
    27         string res2 = s2 + s1;
    28         return res1 > res2;
    29     }
    30 };

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

     1 public class Solution {
     2     public String largestNumber(int[] nums) {
     3         int sz = nums.length;
     4         String [] numStr = new String[sz];
     5         for(int i = 0; i < sz; ++i){
     6             numStr[i] = String.valueOf(nums[i]);
     7         }
     8         Arrays.sort(numStr, new Comparator<String>(){ //这里就不用单独的去创造一个函数对象了,直接new一个使用就可以了
     9             public int compare(String s1, String s2){
    10                 String tmp1 = s1+s2;
    11                 String tmp2 = s2+s1;
    12                 return tmp2.compareTo(tmp1);
    13             }
    14         });
    15         String ret = new String("");
    16         for(int i = 0; i < sz; ++i){
    17             ret += numStr[i];
    18         }
    19         if(ret.charAt(0) == '0')
    20             ret = "0";
    21         return ret;
    22     }
    23 }
  • 相关阅读:
    混合 App 打开 H5 调试开关
    国内申请苹果美区ID
    windows鼠标右键文件太多
    已经配置好了的 jmeter + ant 框架
    fiddler的使用:抓包定位、模拟弱网
    jmeter响应数据中文乱码处理
    jmeter设置中文语言
    Jmeter使用CSV Data参数化,中文参数传递过程出现乱码问题
    monkey详解
    Chrome F12 谷歌开发者工具解析
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/4902803.html
Copyright © 2020-2023  润新知