leetcode179
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的更多相关文章
- LeetCode-179. Largest Number
179. Largest Number Given a list of non negative integers, arrange them such that they form the larg ...
- [LeetCode179]Largest Number
题目: Given a list of non negative integers, arrange them such that they form the largest number. For ...
- [Swift]LeetCode179. 最大数 | Largest Number
Given a list of non negative integers, arrange them such that they form the largest number. Example ...
- Leetcode179. Largest Number最大数
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数. 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说明: 输出结果 ...
- LeetCode--179场周赛题解
水题: class Solution { public: string generateTheString(int n) { string s; string a="a",b=&q ...
随机推荐
- hdu2060-2062
hdu 2060 斯诺克,读懂题意直接模拟 #include<stdio.h> int main(){ int N; ]; a[]=; ;i<=;i++){ a[i]=(-i)*i/ ...
- zeroMQ 学习
zeroMQ 是一个高性能的分布式设计的消息队列,网上有人进行过性能的比较,非常厉害,并且很大约40多种语言的API 可以调用,真实很不错的. 而且有一点就是使用简单,不需要服务器,对于使用C/C++ ...
- 注册表禁用和启用USB端口
USB端口禁用把下面代码另存为文件:USB_Disable.batcSCript \\AppServices\netlogon\USB_Disable.vbs--------------------- ...
- nyoj 一笔画问题
一笔画问题 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来. 规定,所有的边都只能画一次,不能重复画. 输入 第一行只有一个正整 ...
- linQ to sql 查询生成的sql语句
1. 如果是控制台应用,直接 db.Log = Console.Out; 2.其他应用则用如下语句: StringBuilder sql = new StringBuilder(); db.Log ...
- [boost] : lightweight_test库
lightweight_test轻量级单元测试框架, 只支持最基本的单元测试, 不支持测试用例, 测试套件的概念, 简单小巧, 适合要求不高或者快速测试的工作. 基本用法 需要包含头文件#includ ...
- 【python】格式化字符
格式化字符串总结如下,红色部分是需要掌握部分: 以下几个常用的实例: 1.%s的使用 "%s is the author" %("paulwinflo")> ...
- qt ISO C++ forbids declaration of 'XXXX' with no type
error: ISO C++ forbids declaration of 'XXXX' with no type 出现这个错误,一般是由于两个CPP相互都相互包含了对方的头文件造成的,比如: 当 ...
- linux 标准I/O (一)
在前面<UNIX环境高级编程----文件描述符浅析>一文中所讲的I/O函数都是针对文件描述符.而对于标准I/O库,它们的操作都是围绕流来进行的.当用标准I/O库打开或创建一个文件时,我们已 ...
- BASIC-18_蓝桥杯_矩形面积交
解题思路: 1.先将可能的情况列出,根据分类确定计算的方式; 示例代码: #include <stdio.h>#define N 8 int main(void){ int i = 0 , ...