博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer第八天
阅读量:7103 次
发布时间:2019-06-28

本文共 2097 字,大约阅读时间需要 6 分钟。

32.把数组排成最小的数

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

解题思路:

  1. 实际是将数组元素进行排序的操作
  2. 排序规则为,若MN组成的数字大于NM,则N在前M在后
  3. 使用Comparatpr定制排序规则
  4. 考虑到数字连接起来可能使int溢出,所以转换为使用String来操作。
import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;public class Solution {    public String PrintMinNumber(int [] numbers) {        String result = "";        if(numbers == null || numbers.length == 0) return result;        ArrayList
list = new ArrayList<>(); for(int i = 0 ;i < numbers.length;i++){ list.add(numbers[i]+""); } Collections.sort(list,new Comparator
(){ @Override public int compare(String sNum1,String sNum2){ String num1 = sNum1+sNum2; String num2 = sNum2+sNum1; return num1.compareTo(num2); } }); for(String str : list){ result += str; } return result; }}

33.丑数

把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

public class Solution {    public int GetUglyNumber_Solution(int index) {        if(index <= 0 ) return 0;        int mult2_Idx = 0,mult3_Idx = 0,mult5_Idx = 0;        int[] uglyNumber = new int[index];        uglyNumber[0] = 1;        for(int i = 1;i

34.第一个只出现一次的字符

在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置

import java.util.HashMap;public class Solution {    public int FirstNotRepeatingChar(String str) {        int result = Integer.MAX_VALUE;        if(str.length() == 0) return -1;        HashMap
charIdx = new HashMap<>(); for(int i = 0 ;i < str.length(); i++){ Character c = str.charAt(i); if(charIdx.containsKey(c)){ charIdx.put(c,-1); }else{ charIdx.put(c,i); } } for(int index : charIdx.values()){ if(index != -1){ result = Math.min(result,index); } } return result; }}

转载于:https://www.cnblogs.com/guoyaohua/p/8443481.html

你可能感兴趣的文章
Deep learning:四十八(Contractive AutoEncoder简单理解)
查看>>
NSDate和NSString相互转换 (转)
查看>>
ASCII Unicode UTF-8 之间的关系
查看>>
计算四则运算表达式(Java语言实现)
查看>>
5、反射-动态代理
查看>>
C++中的类型转换
查看>>
Linux内核的冷热缓存
查看>>
Rop攻击
查看>>
USACO习题:Palindromic Squares
查看>>
C语言中有bool类型吗?
查看>>
保护你的手腕!手腕健康度小检测
查看>>
LVM更换硬盘
查看>>
Helvetic Coding Contest 2017 online mirror M&N&O. April Fools' Problem
查看>>
Openjudge1388 Lake Counting【DFS/Flood Fill】
查看>>
我的vim配置
查看>>
grep 过滤器基础
查看>>
C#之regular expression
查看>>
有趣的鸡蛋问题,应该还可以进一步简化
查看>>
Halcon算子翻译——endtry
查看>>
用Windows 8开发第一个Windows应用商店应用
查看>>