数串——牛客刷题

本文介绍了一种将多个正整数重新排列以形成最大可能整数的算法。通过将整数转换为字符串并使用冒泡排序进行特殊比较,确保了最终结果的最优性。文章详细解释了算法的实现步骤,并提供了完整的Java代码示例。

题目描述:

设有n个正整数,将他们连接成一排,组成一个最大的多位整数。
如:n=3时,3个整数13,312,343,连成的最大整数为34331213。
如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。

题目分析:

首先,我们将输入的数字转成字符串存入数组,方便下一步对字符串进行拼接比较大小。

其次,我们通过冒泡排序(或者其他排序)将数组中的元素从大到小排序。任意两个数之间的大小定义:AB>BA,则A>B。

最后,将数组中各元素依次拼接即可达到最大的数字。

代码实现:

 

 1 import java.util.Scanner;
 2 public class numStr {
 3     public static void main(String[]args){
 4         Scanner scan=new Scanner(System.in);
 5         int n=scan.nextInt();
 6         scan.nextLine();
 7         String numIn=scan.nextLine();
 8         String[] num=numIn.split(" ");
 9         //冒泡排序的变形
10         for(int i=0;i<num.length;i++){
11             for(int j=i+1;j<num.length;j++){
12                 if(Integer.parseInt(num[i]+num[j])<Integer.parseInt(num[j]+num[i])){
13                     String temp=num[i];
14                     num[i]=num[j];
15                     num[j]=temp;
16                 }
17             }
18         }
19         //或者使用冒泡排序,每次将最小的放置最后    
20         String maxstr="";
21         for(String str:num){
22             maxstr+=str;
23         }
24         System.out.print(maxstr);
25     }
26 }

 

转载于:https://www.cnblogs.com/darlinFly/p/9349634.html

### Java编程练习在线平台 对于希望提升Java编程技能的学习者来说,在线是一种非常有效的实践方式。以下是几个适合Java开发者使用的在线平台: #### LeetCode LeetCode 是一个广受欢迎的算法和据结构训练平台,虽然其主要关注于算法挑战,但也提供了大量的 Java 目供用户解决。这些目涵盖了从简单到困难的各种难度级别[^2]。 ```java // 示例:在LeetCode上常见的字符反转问 public class ReverseString { public String reverse(String s) { char[] chars = s.toCharArray(); int n = chars.length; for(int i = 0; i < n / 2; ++i){ char temp = chars[i]; chars[i] = chars[n - i - 1]; chars[n - i - 1] = temp; } return new String(chars); } } ``` #### HackerRank HackerRank 提供了一个专门针对 Java 的部分,其中包括基础语法、面向对象编程以及更复杂的多线程处理等内容。这是一个非常适合初学者逐步提高自己能力的地方[^4]。 #### Codeforces 尽管Codeforces 更倾向于竞赛型编程,但它同样拥有大量可以用 Java 来解答的问。这些问通常需要较高的逻辑思维能力和较强的编码技巧[^5]。 #### 网 作为国内知名的 IT 职业教育品牌之一,“网”不仅提供丰富的简历指导服务,还设有专门用于技术求职准备的在线评测系统——“练习赛”。这里聚集了大量的高质量模拟试,覆盖范围广泛,包括但不限于 Java 技术栈[^3]。 #### AtCoder AtCoder 是另一个国际性的竞技编程比赛举办方,它的大部分目都可以使用多种语言完成提交,当然也支持 Java 。由于其独特的评分机制(基于测试案例),使得参赛选手能够更加专注于解决问本身而非特定实现细节上的优化[^1]。 ### 总结 以上列举了一些国内外优秀的资源站点,它们各自侧重不同方面但共同构成了帮助程序员成长的重要组成部分。无论是为了应对校园招聘还是个人兴趣爱好发展考虑,积极参与上述任何一个或者多个平台都将极大地促进您的技术水平进步!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值