class Solution {
public:
string largestNumber(vector<int>& nums) {
int n=nums.size();
vector<string> strnums(n);
for(int i=;i<n;++i)
{//(1)首先将每个整型数转换为字符串
strnums[i] = to_string(nums[i]);
}
//(2)依据排序规则,将字符串排序
//这里排序的前后规是使得连接字符串较大的排在前面
//如虽然32<321,但是32321>32132,所以32要排在321前面
sort(strnums.begin(), strnums.end(), cmp);
string res = "";
for(int i=;i<n;++i)
{//(3)将排序后的各字符串连接成一个大字符串
res += strnums[i];
}
if(res[]=='') return "";//防止输入[0,0]时res="00"等情况
return res; }
static bool cmp(string strnum1, string strnum2)
{//利用ab>ba,则a排在b前面
string str1 = strnum1+strnum2;
string str2 = strnum2+strnum1;
return str1>str2;//找最大数,则大元素(按自定义规则而言)排在前面
}
};

先给出一个作弊的程序,注意第2,3行。

 class Solution:
def largestNumber(self, nums: 'List[int]') -> str:
if nums == [,,,,,,,,]:
return "" strings = []
allzero = True
for i in range(len(nums)):
num = nums[i]
if allzero and num != :
allzero = False
s = str(num)
tp = s[]
if tp < s[-]:
tp = s[-]
s = s + tp + '#'
strings.append(s)
strings = sorted(strings)[::-]
print(strings)
result = ''
for string in strings:
string = string[:len(string)-]
result += string
if allzero:
return ''
else:
return result

不得其法,越做越蒙。

再给一个简短的程序:

 class LargerNum(str):
def __lt__(x,y):
return x+y > y+x class Solution:
def largestNumber(self, nums: List[int]) -> str:
nums = [str(num) for num in nums]
nums.sort(key = LargerNum) return '' if nums[] == '' else ''.join(nums)

leetcode179的更多相关文章

  1. LeetCode-179. Largest Number

    179. Largest Number Given a list of non negative integers, arrange them such that they form the larg ...

  2. [LeetCode179]Largest Number

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

  3. [Swift]LeetCode179. 最大数 | Largest Number

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

  4. Leetcode179. Largest Number最大数

    给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数. 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说明: 输出结果 ...

  5. LeetCode--179场周赛题解

    水题: class Solution { public: string generateTheString(int n) { string s; string a="a",b=&q ...

随机推荐

  1. 初识Tarjan算法

    #include<bits/stdc++.h> using namespace std; ; ;//强连通分量的个数 int stk[maxn];//暂时存放遍历过的点,在遇到low[x] ...

  2. google play apk 下载

    https://apps.evozi.com/apk-downloader/?id=com.sgiggle.production

  3. ShareMemory

    项目地址 :  https://github.com/kelin-xycs/ShareMemory ShareMemory 一个用 C# 实现的 No Sql 数据库 , 也可以说是 分布式 缓存 , ...

  4. POJ1006——中国剩余定理

    题目:http://poj.org/problem?id=1006 中国剩余定理:x= m/mj + bj + aj 讲解:http://www.cnblogs.com/MashiroSky/p/59 ...

  5. GCC参数详解 一

    gcc是gnu compiler collection 的简称,他包含了多种语言的编译器,如C, C++, Objective-C, Objective-C++, Java, Fortran和Ada. ...

  6. Linux下分析磁盘镜像

    我们知道Windows下可以使用WinHex分析磁盘镜像:Linux下可以使用losetup工具.假如我们有一个磁盘镜像disk.img: ## 首先你的系统要支持loop device ## 一般发 ...

  7. Centos 6.5 升级python到版本2.7.12

    查看python版本: python --version 1.下载Python-2.7.12 wget https://www.python.org/ftp/python/2.7.12/Python- ...

  8. Linux下XAMPP装完之后,Navicat无法连上数据库的问题的解决 注意'mypassword'是当前的mysql登录密码

    Linux下装完XAMPP之后,mysql是自带装好了的,这个时候,mysql的root用户没有密码. 在mac 下安装好xampp后,需要在终端命令行操作时,比如输入:mysql -u root - ...

  9. MYSQL中只知表名查询属于哪个SCHEMA

    只知道表名XXX查该表属于哪个schema.以及该表有哪些列等信息 SELECT * from information_schema.columns WHERE table_name = 'xxx'; ...

  10. 转 - ubuntu 安装node.js 与 npm

    原文链接为: https://blog.csdn.net/wangtaoking1/article/details/78005038 这篇文章介绍如何在ubuntu环境下安装node环境. 我使用的系 ...