剑指offer_33:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
思路:这个题实际是考的字符串比大小,字符串是如何比大小?
1 .如果字符串相等返回值为0,不等返回其他数值。
比较方法是先比较对应字符的大小(Ascall吗顺序),从第一个字母开始比较。
2.如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值(ascii码值)
(负值前字符串的值小于后字符串,正值前字符串大于后字符串)
3.如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,
以此类推,直至比较的字符或被比较的字符有一方全比较完,这时就比较字符的长度.
我们这里用到的是 第1个:334和3331谁大? 从第一位一直到第三位比较“4>3”故,“334”>“3331”,
程序验证如下:
public class test_2 {public static void main(String[] args) {// TODO Auto-generated method stubString str_1="334";String str_2="3331";//如果相等则返回0,System.out.println(str_1.compareTo(str_2));}}
结果:
我们可以看到,334比3331大1.那么我们就可以做下面这道题了,其实就是比较两个字符串的连接大小
list.sort((a,b)->(a+""+b).compareTo(b+""+a));
上面这句话的意思是,重写list的sort方法:比如 3 32 321 就是做这样一个事,
32132<32321,所以将 321 放在 32 的前面 ,------ 3 321 32
3213<3321 ,所以将 321 放在 3 的前面,------ 321 32 3
以此类推:
package offer_java;import java.util.ArrayList;
import java.util.List;/*输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。*/public class PrintMinNumber {static String PrintMinNumber(int [] numbers) {if (numbers.length==0|| numbers ==null) {return "";}List<Integer> list=new ArrayList<>();for(int a:numbers) {list.add(a);}list.sort((a,b)->(a+""+b).compareTo(b+""+a));StringBuffer stringBuffer=new StringBuffer();for(int a:list) {stringBuffer.append(a);}return stringBuffer.toString();}public static void main(String[] args) {// TODO Auto-generated method stubint [] numbers= {3,32,321};System.out.println(PrintMinNumber(numbers));}}
下面是list.sort的源码:
//从小到大的排序
list.Sort(delegate(int a, int b){return a.CompareTo(b);}
);
//从大到小的排序list.Sort((a, b) =>b.CompareTo(a)); //lamda expression
这种方式适合于字符串等许多类型的排序!
剑指offer_33:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。相关推荐
- 代码随想录算法训练营第八天|344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词 剑指Offer58-II.左旋转字符串
一.344.反转字符串 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的 ...
- 代码随想录算法训练营第八天|● 344.反转字符串● 541. 反转字符串II● 剑指Offer 05.替换空格● 151.翻转字符串里的单词● 剑指Offer58-II.左旋转字符
一.344.反转字符串 力扣 思路:很简单的一个for循环双指针,left和right交换. class Solution {public void reverseString(char[] s) { ...
- 剑指offer06.从尾到头打印链表
剑指offer06.从尾到头打印链表 1. 改变链表结构的解法 2.可以使用栈,递归,或者直接反向输出数组 提示: 若是面试遇到此题,最好先向面试官确认是否可以改变链表的结构, 1. 改变链表结构的解 ...
- 《剑指offer》内容总结
(1)剑指Offer--Trie树(字典树) Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是统计和排序大量的字符串(但不仅限于字符串),所以经常 ...
- python数据结构与算法刷题——剑指offer第二版加部分leetcode题
说不清楚,只能看代码理解的用红色标出 查找算法:查找较排序来说较简单,不外乎顺序查找和二分查找.哈希表查找和二叉排序树查找.(很多面试官喜欢让应聘者写出二分查找(如test53)的代码)[注意:二分查 ...
- 剑指offer所有的题目的总结
目录 基本都是参考别的博客和书本的代码,仅作为自己笔记用!! 零.小结: 一.位运算 1.二进制中1的个数 2.判断二进制中0的个数 3.二进制高位连续0的个数 二.二叉树 1.二叉搜索树第k个结点 ...
- 剑指offer所有的题目总结
自己找工作过程中进行的整理总结. 参考别的博客和书本的代码进行的总结,作为自己笔记用!! 零.小结: 一.位运算 1.二进制中1的个数 2.判断二进制中0的个数 3.二进制高位连续0的个数 二.二叉树 ...
- 剑指offer刷题1-66题-Python3
文章目录 [剑指offer-Python3]1 判断数组中是否含有某整数. [剑指offer-Python3]2 替换字符串中的空格 [剑指offer-Python3]3 链表反转 [剑指offer- ...
- 《剑指offer》解法总结
剑指offer这本书之前看过一次,今天又在牛客网上完成了最后一道题的编程. 第一次这本书,对于思路和编程都是难点:第二次在牛客网上刷题的时候,越来越感觉编程并非难点,难点在于没有解题思路,下不了手.如 ...
- 《剑指Offer(第2版)》读书笔记
目录 第1章 面试的流程 1.3 面试的3个环节 1.3.1 行为面试环节 1.3.2 技术面试环节 P12:把一个字符串转换成整数 第2章 面试需要的基础知识 2.2 编程语言 2.2.1 C++ ...
最新文章
- 【AI-1000问】人脸的4个方向,你还分的清楚吗?
- bgp通告四原则_BGP的十三条选路原则
- c语言在线编译器_C语言和汇编语言是什么?他们之间可以有怎样的合作?为你解析...
- C#各个版本中的新增特性详解
- Java中事件驱动程序设计_【JAVA语言程序设计基础篇】--事件驱动程序设计--鼠标事件...
- python定义test方法_关于python:使用pytest测试类方法
- js 鼠标点击文本框 提示文字消失
- php 批量上传图片插件,diyUpload - jQuery多张图片批量上传插件
- Proxmark3 Easy破解门禁卡(转载 珍贵知识防止掉失)
- Diamond软件的使用(5)--建立Modelsim仿真环境
- 哲学家进餐问题 C++实现
- python数据分析 - 卡方检验
- python简单的构建爬虫ip代理池
- html5 canvas实现桌面效果,基于html5 canvas实现漫天飞雪效果实例
- word格式文档在linux打开吗,ubuntu 打开word文档 ubuntu word 文档
- 读书笔记 - 《经济学通识》
- 大规模定制家具实施ERP的必要性
- 一篇文让你秒懂CDN
- 1分钟读懂猫咪免疫流程:怎么打疫苗,必须打的疫苗有哪些
- 要么好好地活着,要么就死得其所
热门文章
- 2020 Java 全栈工程师进阶路线图,不可错过
- BZOJ2001 HNOI2010 城市建设
- 算法的时间复杂度和空间复杂度计算
- repo sync error: Exited sync due to fetch errors
- openGauss社区成立QA SIG
- 18位身份证校验代码
- tidb分布式数据库_TiDB如何在分布式数据库中结合OLTP和OLAP
- Mybatis关联关系
- [TSP-FCOS]Rethinking Transformer-based Set Prediction for Object Detection
- 使用Scrapy模拟登陆人人网