这两个题几乎是一样的,只是leetcode的题是排成最大的数,剑指的题是排成最小的

179. Largest Number

a.需要将数组的数转换成字符串,然后再根据大小排序,这里使用to_string函数将整数转换成字符串,比printf的方式简洁

b.cmp函数必须用static才能使用

c.这题需要排成最大的数,cmp函数如何确定< 、>符合呢?cmp中可以默认为a就是两个字符中的第一个,b是第二个,所以a+b>b+a返回true就继续保持这样的排列。如果是<,a+b就会返回fasle,相对于原来的情况就要重新排列

d.会出现这种情况:

Input:
[0,0]
Output:
"00"
Expected

即拼接成了多个0,这个时候通过判断第一个字符是不是0来确定返回值

class Solution {
public:
string largestNumber(vector<int>& nums) {
vector<string> input;
for(int i = ;i < nums.size();i++)
input.push_back(to_string(nums[i]));
sort(input.begin(),input.end(),cmp);
string res = "";
for(int i = ;i < input.size();i++)
res += input[i];
return res[] == '' ? "" : res;
}
static bool cmp(string a,string b){
return a + b > b + a;
}
};

剑指offer33 把数组排成最小的数

正确代码

class Solution {
public:
string PrintMinNumber(vector<int> numbers) {
vector<string> str;
for(int i = ;i < numbers.size();i++){
char ch[];
sprintf(ch,"%d",numbers[i]);
str.push_back(ch);
}
sort(str.begin(),str.end(),cmp);
string s;
for(int i = ;i < str.size();i++)
s += str[i];
return s;
}
static bool cmp(string a,string b){
return a+b < b+a;
}
};

如果写成这样,是错误的。因为tmp是个char,因为str这个vector是string的。

char tmp = numbers[i] + '';
str.push_back(tmp);

如果写成这样,也是错误的。因为+'0'这种转换只能转换成char字符,不能转换成字符串。

string tmp = numbers[i] + '';
str.push_back(tmp);

利用to_string函数可写

string tmp = to_string(numbers[i]);
str.push_back(tmp);

其他人也有用stringstream来写的

leetcode 179. Largest Number 、剑指offer33 把数组排成最小的数的更多相关文章

  1. 剑指offer 把数组排成最小的数 atoi和itoa,pow

    pow(x,y)在#include<math.h>文件中,计算x的y次方. C++引入头文件:#include <stdlib.h> 或者 #include <cstdl ...

  2. 剑指Offer31 把数组排成最小的数

    /************************************************************************* > File Name: 31_SortAr ...

  3. [剑指Offer]45-把数组排成最小的数

    题目链接 https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993?tpId=13&tqId=11185&t ...

  4. 剑指Offer——把数组排成最小的数

    题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 分析: 排 ...

  5. 剑指offer--32.把数组排成最小的数

    用to_string()将整形转化为字符串,对字符串进行比较 --------------------------------------------------------------------- ...

  6. 剑指Offer-39.把数组排成最小的数(C++/Java)

    题目: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 分析: 将数组 ...

  7. 用js刷剑指offer(把数组排成最小的数)

    题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 思路 对ve ...

  8. 4-剑指offer: 把数组排成最小的数

    题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 代码: cl ...

  9. 剑指Offer - 九度1504 - 把数组排成最小的数

    剑指Offer - 九度1504 - 把数组排成最小的数2014-02-06 00:19 题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输 ...

随机推荐

  1. gridview把textbox的值修改还是旧值的解决方法

    解决方法很简单,加上if(!IsPostBack) 就OK了,因为之前加载之前都会调用InitData(). protected void Page_Load(object sender, Event ...

  2. 使用CTE生成辅助表(数字或时间)等

    数字辅助表: , ;WITH Digital_Rangs(Digital) AS ( SELECT @start_digital UNION ALL FROM [Digital_Rangs] WHER ...

  3. 【Java面试题系列】:Java基础知识常见面试题汇总 第一篇

    文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 1.前言 ​ 参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后,一般都会让先做一份笔试题,然后公司会根据笔试题的回答结果,确定 ...

  4. ICPC 2016 China Final J. Mr.Panda and TubeMaster【最大费用最大流】

    有一种限制下界强制选的,但是也可以不用 把每个格点拆成两个,一个连s一个连t,对于不是必选的连中间连流量1费用0边表示不选,然后黑白染色,黑点连横着白点连竖着,边权就是这条水管的权值,然后跑最大费用最 ...

  5. (三)siege的使用

    学习: ELK——http://dockone.io/article/3655 docker——http://www.testclass.net/docker/ Android Monkey压力测试— ...

  6. js函数-构成

    前言 函数是一种封装,在任何语言中都是一个核心概念.在js中,函数是做为对象的子类型存在的.可以拥有自己的属性和方法,可以做为值进行传递,这两个特性让js拥有使用函数式编程的能力. 函数的声明 字面量 ...

  7. 长春理工大学第十四届程序设计竞赛(重现赛)I.Fate Grand Order

    链接:https://ac.nowcoder.com/acm/contest/912/I 题意: Fate Grand Order是型月社发行的角色扮演类手机游戏,是著名的氪金抽卡"垃圾&q ...

  8. HDU-3639-Hawk-and-Chicken(强连通,缩点,DFS)

    链接:https://vjudge.net/problem/HDU-3639 题意: 有n个小朋友在一个班级中,现在要选择班长.收集了小朋友们的意见,一条意见表示为A认为B合适.这个是具备传递性的,A ...

  9. Linux修改war包中文件

    rm -rf /tmp/wiq.warcp /u02/wms_dev/wiq-app/wars/wiq.war /tmpcd /tmp jar xvf wiq.war vim WEB-INF/clas ...

  10. NET Core中使用Apworks

    NET Core中使用Apworks HAL,全称为Hypertext Application Language,它是一种简单的数据格式,它能以一种简单.统一的形式,在API中引入超链接特性,使得AP ...