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. java时间处理--持续时间格式化工具和常量类DurationFormatUtils

    阅读目录 DurationFormatUtils类简介 maven地址 构造方法 DurationFormatUtils() formatDurationHMS(long durationMillis ...

  2. java类库 java API jar包 C语言函数库

    翁凯说:java的强大是因为类库的强大 C/C++强大是因为函数库 在程序中用到系统提供的标准函数库中的输入输出函数时 应在程序的开头写上一行:#include"stdio.h"或 ...

  3. kettle--window开发环境和linux运行环境的迁移

    首先要做的是将kettle在linux下搭建好. 一.搭建linux的kettle环境 1.1解压 (my_python_env)[root@hadoop26 ~]# .zip -d /usr/loc ...

  4. php 生成.csv的文件

    $data = array( "title" => array("服务器", "链接", "对应ID"), &qu ...

  5. 新玩具,React v16.7.0-alpha Hooks

    周五看见React v16.7.0-alpha Hooks,今早起来看见圈里已经刷屏了Hooks,正好周末,正好IG和G2的比赛还没开始,研究下... 刚刚接触react时候非常喜欢用函数式组件,因为 ...

  6. 安卓秘钥生成命令以及SHA1值获取办法

    切换到秘钥所在目录,例如:cd C:\Program Files\Java\jdk1.8.0_171\bin 执行命令:keytool -genkey -alias demo.keystore -ke ...

  7. k8s1.4.3安装实践记录(1)-etcd、docker、flannel安装配置

    虚拟机:VMware® Workstation 12 Pro 系统:CentOS Linux release 7.2.1511 (Core) 3.10.0-327.el7.x86_64 由于刚开始学习 ...

  8. python-并发测试用例

    以前看了虫师的并发,然后觉得以后如果遇上领导要求一个模块里的并发怎么办,然后就想到了下面的方法: 代码: 在原有的基础下再往casedir数组加模块三里面细分的对象.(这里可以封装成函数调用,工作需要 ...

  9. linux上很方便的上传下载文件工具rz和sz使用介绍

    简单说就是,可以很方便地用这两个sz/rz工具,实现Linux下和Windows之间的文件传输(发送和接收),速度大概为10KB/s,适合中小文件.rz/sz 通过Zmodem协议传输数据   一般来 ...

  10. GROUP BY关键字与WITH ROLLUP一起使用

    1 GROUP_CONCAT mysql> SELECT student_name, ->     GROUP_CONCAT(test_score) ->     FROM stud ...