Java -- 给定一个int数组,拼接出最大数值

public class ZhiJieTiaoDong {

    /*        给定一个数组:组合成最大数值     */    public String szpj(int[] args){        if(null == args || args.length == 0){            return "";        }        StringBuilder stringBuilder = new StringBuilder();        int[] yxsz = compareSZ(args);        for (int i = args.length - 1; i >= 0; i--){            stringBuilder.append(String.valueOf(args[i]));        }        return stringBuilder.toString();    }

    /*        排序     */    private int[] compareSZ(int[] args){        if(null == args){            throw new NullPointerException();        }        if (args.length == 1){            return args;        }        int change = 0;        for(int i = 0; i < args.length - 1; i++){            for(int j = i + 1; j < args.length; j++){                if(compare(args[i], args[j])){                    change = args[i];                    args[i] = args[j];                    args[j] = change;                }            }        }        return args;    }

    /*        比较两个数字哪个作高位排列        example: 9, 98 --> 998; 15, 18 --> 1815     */    private boolean compare(int a, int b){        String aa = String.valueOf(a);        String bb = String.valueOf(b);        int ab = Integer.valueOf(aa + bb);        int ba = Integer.valueOf(bb + aa);        if(ab >= ba){            return true;        }else {            return false;        }    }

    public static void main(String[] args){        ZhiJieTiaoDong zhiJieTiaoDong = new ZhiJieTiaoDong();        int[] a = {10,21,13,24};        int[] b = {35,11,23,4,34};        int[] c = {0, 4,2, 32, 11, 22, 11};        System.out.println(zhiJieTiaoDong.szpj(c));    }

}

原文地址:https://www.cnblogs.com/fqfanqi/p/10693444.html

时间: 2024-10-31 15:10:21

Java -- 给定一个int数组,拼接出最大数值的相关文章

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数

题目描述: 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.   你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用.示例:给定 nums = [2, 7, 11, 15], target = 9返回 [0, 1] 思路: 第一层for循环从索引0到倒数第二个索引拿到每个数组元素,第二个for循环遍历上一层for循环拿到的元素的后面的所有元素. 具体代码: 1 public class Solution { 2 public int[] twoSum(int[] nums,

刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数

今天下午,看了一会github,想刷个题呢,就翻出来了刷点题提高自己的实际中的解决问题的能力,在面试的过程中,我们发现,其实很多时候,面试官 给我们的题,其实也是有一定的随机性的,所以我们要多刷更多的题.去发现问题. 题目:     给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 解析: 实际这里就是给你的一个列表的数字,给你一个预期,让你返

(016)给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树(keep it up)

给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树. 由于数组是递增有序的,每次都在中间创建结点,类似二分查找的方法来间最小树. struct TreeNode { int data; TreeNode* leftChild; TreeNode* rightChild; }; void newNode(TreeNode*& vNode, int vData) { vNode = new TreeNode; vNode->data = vData; vNode->leftChi

(016)给定一个有序数组(递增),敲代码构建一棵具有最小高度的二叉树(keep it up)

给定一个有序数组(递增),敲代码构建一棵具有最小高度的二叉树. 因为数组是递增有序的.每次都在中间创建结点,类似二分查找的方法来间最小树. struct TreeNode { int data; TreeNode* leftChild; TreeNode* rightChild; }; void newNode(TreeNode*& vNode, int vData) { vNode = new TreeNode; vNode->data = vData; vNode->leftChi

产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复

写在前面 前天去面试了,给出的笔试中有这样的一道算法题,产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复 当时,脑子一热,也没想那么多,就用集合实现了一下,经面试官提醒,发现还有更好的方式来实现. 代码 首先看一下这样一段代码 1 namespace Wolfy.RandomDemo 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 List<int> lst = new List<i

java中将一个字符数组赋值给另一个,两者同时变化

java中将一个字符数组赋值给另一个,两者的变化怎么是同步的?怎么才能让他们独立开? 比如有一个int[][] a 已经存在值,现在定义int[][] b=a;之后改变a的值,为何b也跟着改变?怎么才能那个让b不跟随a改变?如果b非变不可,我想记录下a没改变之前的值该怎么办?谢谢 如果需要b不变,就必须用for循环,使a数组的每个元素都复制到b的数组里.之所以b会随着a变化,那是因为他们指向了同一个对象.

9.5位操作(三)——给定一个正整数,找出与其二进制表示中1的个数相同,且大小最接近的那两个数

/** * 功能:给定一个正整数,找出与其二进制表示中1的个数相同,且大小最接近的那两个数. * (一个略大一个略小.) */ 三种方法: 方法一:蛮力法 方法二:位操作法 <span style="white-space:pre"> </span>/** * 方法:位操作法 * 思路:获取后一个较大的数 * 1)计算c0和c1.c1是拖尾1的个数,c0是紧邻拖尾1的作坊一连串0的个数. * 2)将最右边.非拖尾0变为1,其位置为p=c1+c0. * 3)将位p

给定一个整数数组,奇数位于偶数前面

两个指针,一个指向最前,一个指向最后,依次进行交换 代码: #include<iostream> using namespace std; //使奇数位于偶数前面 void reSort(int *pData,int length){ if(NULL == pData || length <= 0) return ; int *pBegin = pData; int *pEnd = pData + length -1; while(pBegin < pEnd){ //奇数向前移动

1、给定一个字符数组,按照字典顺序进行从小到大的排序

/* * 1.给定一个字符数组,按照字典顺序进行从小到大的排序 * String[] arr = {"nba","abc","cba","zz","qq","haha"}; * 思路: * 1.对数组排序.可以用选择.冒泡 * 2.for嵌套和比较以及换位 * 3.问题:以前排的是整数,比较用的是运算字符 * * 字符串比较使用的是compareTo()函数 */public class