- 题目描述:
- 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
- 输入:
-
输入可能包含多个测试样例。
对于每个测试案例,输入的第一行为一个整数m (1<=m <=100)代表输入的正整数的个数。
输入的第二行包括m个正整数,其中每个正整数不超过10000000。
- 输出:
-
对应每个测试案例,
输出m个数字能排成的最小数字。
样例输入:
23 13 6 23456 56
样例输出:
13236 2345656
public class MiniNumber { public static long getMiniNumber(int[] positiveInts) { if(positiveInts.length == 0){ return 0; } if(positiveInts.length == 1){ return positiveInts[0]; } for(int i=positiveInts.length-1;i>0;i--){ for(int j=i-1;j>=0;j--){ if(isBigger(positiveInts[j],positiveInts[i])){ int temp =positiveInts[i]; positiveInts[i] =positiveInts[j]; positiveInts[j] = temp; } } } try{ long result = positiveInts[0]; for(int i=0;i<positiveInts.length-1;i++){ //拼接结果集成long result = (long)(result*Math.pow(10,(positiveInts[i+1]+"").length()))+positiveInts[i+1]; } return result; }catch(Exception e){ return -1; } } private static boolean isBigger(int x, int y) { //比较两个数字大小字典大小 StringBuffer a = new StringBuffer().append(x); StringBuffer b = new StringBuffer().append(y); while(a.length() != b.length()){ if(a.length()>b.length() && a.length()<b.length()*2){ b.append(b.substring(0,a.length()-b.length())); }else if(a.length()<b.length() && a.length()*2>b.length()){ a.append(a.substring(0,b.length()-a.length())); }else if(a.length()>=b.length()*2){ b.append(b); }else{ a.append(a); } } boolean result = false; for(int i=0;i<a.length();i++){ if(a.charAt(i) < b.charAt(i)){ result = false; break; }else if(a.charAt(i) > b.charAt(i)){ result = true; break; }else{ continue; } } return result; } }
Stay hungry,stay foolish !
标签:
OJ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构