题目要求

P1012题目链接

分析

直接按照字符串处理,可以按照字典序排序。
但这样存在问题:
比如32和321,我们按照字典序进行排序“321”>“32”,但实际上32132<32321,所以compareTo的计算方式需要改变。
我们在Arrays.sort()里加入新的Comparator对象,这是一个接口,所以可以用匿名内部类的语法来创建对象。
核心算法是:

Arrays.sort(array, new Comparator<String>() {@Overridepublic int compare(String str1, String str2) {return (str1+str2).compareTo(str2+str1);}
});

第一次提交——WA

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();String[] array = new String[num];for (int i = 0; i < num; i++) {array[i] = scanner.next();}scanner.close();Arrays.sort(array);StringBuilder builder = new StringBuilder();for (int i = num-1; i >= 0; i--) {builder.append(array[i]);}System.out.println(builder);}
}

随后获取了测试数据4:
in
6
321 32 407 135 13 217

out
4073232121713513

所以就需要把算法改成“分析”中的算法啦!

第二次提交——AC

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();String[] array = new String[num];for (int i = 0; i < num; i++) {array[i] = scanner.next();}scanner.close();Arrays.sort(array, new Comparator<String>() {@Overridepublic int compare(String str1, String str2) {return (str1+str2).compareTo(str2+str1);}});StringBuilder builder = new StringBuilder();for (int i = num-1; i >= 0; i--) {builder.append(array[i]);}System.out.println(builder);}
}

字符串的排序不一定要完全按照字典序(洛谷P1012题题解,Java语言描述)相关推荐

  1. 生日排序(洛谷P1104题题解,Java语言描述)

    题目要求 P1104题目链接 分析 一个典型的排序题,我们将针对 year.month.day.id 四个属性进行排序,并输出对应的 name . 使用面向对象,封装一个类,再使用sort做下处理就行 ...

  2. 排序分发“魔法照片”(洛谷P1583题题解,Java语言描述)

    题目要求 P1583题目链接 分析 感觉需要排两次序,一次是为了获取额外权重而进行的排序,另一次是加上额外权重以后为了得到最终权重而进行的排序. 为了便于随机访问,我还是选择了数组这个线性结构. 另外 ...

  3. [计数排序]统计三个数和的[最大概率](洛谷P2911题题解,Java语言描述)

    题目要求 P2911题目链接 分析 我用暴力思想做的,对每种和进行计数. 暴力的基本思想是计数排序,开一个数组,计数最后按照要求得到结果. 遍历的过程就很暴力哈哈哈-- 这位大神用期望做的,Orz → ...

  4. 按字母位置关系给数字排序(洛谷P4414题题解,Java语言描述)

    题目要求 P4414题目链接 分析 这题其实就是排序,特别水,因为只有三个数-- 问题是这排序咋排呢?也不是那么直接的,因为是按照ABC之间位置关系排一下. 其实简单处理的话就是先排序,直接按照ABC ...

  5. 用Java简便地去重+排序(洛谷P1059题题解,Java语言描述)

    前言 Java终于不恶心我了,天哪,TreeSet万岁(坏了,暴露主题了,我的天哪~~) 题目要求 P1059题目链接 分析 当然,我们可以编写排序算法和去重算法,balabala,但我们用的是Jav ...

  6. 字符串的展开(洛谷P1098题题解,Java语言描述)

    题目要求 P1098题目链接 分析 这题最令我崩溃的是各种特殊情况,特别是结尾部分的处理. p1.p2.p3 的操作要处理好,但真正恶心的就是如何判断是可以处理的. 数值和字母不能补全 两边相同的数字 ...

  7. [SpecialJudge]构造“神秘“字符串(洛谷P3742题题解,Java语言描述)

    题目要求 P3742题目链接 分析 这题挺有意思,是SpecialJudge,因为可能有多个答案,判题的时候出现一个就OK--测试用例貌似是足足有50个之多呢-- 要求是,找一个y使f(x,y)=z, ...

  8. 洛谷刷题C语言:闰年判断、Apples、洛谷团队系统、肥胖问题、三位数排序

    记录洛谷刷题QAQ 一.[深基3.例3]闰年判断 题目描述 输入一个年份,判断这一年是否是闰年,如果是输出 111,否则输出 000. 输入格式 输入一个正整数 nnn,表示年份. 输出格式 输出一行 ...

  9. java字符串字典排序_java实现对map的字典序排序操作示例

    本文实例讲述了java实现对map的字典序排序操作.分享给大家供大家参考,具体如下: java中对map的字典序排序,算法验证比对微信官网https://mp.weixin.qq.com/wiki?t ...

最新文章

  1. switchyomega插件_CTF|你所关注的CTFer都在用的插件合集【附:XXE补给+CTF训练集】...
  2. 【Git Bash】在window 下,设置打开gitbash快捷键、修改默认路径
  3. 1012 The Best Rank (25 分)【难度: 中 / 知识点: 排序 前缀和】
  4. oracle 未绑定变量,查看Oracle数据库中未绑定变量的SQL
  5. mybatis generator 属性详解
  6. 你真的会用Vue-cli脚手架和Element-ui进行项目创建吗?
  7. 取磁碟名稱 c++_安徽CDCSCONT PLUS/R/C/E生产厂家,联锁板生产厂家
  8. 可靠型园区网组网,用VRRP还是堆叠?
  9. 开课吧课堂:人工智能行业走向如何?
  10. 正面管教之PHP_主题体验活动之亲密关系
  11. SQLServer 使用sp_repldone标识所有未分发的事务为已分发
  12. MySQL备份还原——mysqldump工具介绍
  13. java Thread.yield()用法详解
  14. 技能竞赛中职计算机课程建设,从计算机辅助设计(工业产品CAD)竞赛谈中职学校计算机应用专业建设.pdf...
  15. python基础——while循环(九九乘法表,阶乘计算器,三角形图案打印输出)
  16. 使用 live555 直播来自 v4l2 的摄像头图像
  17. 洛谷——P1348 Couple number(java实现)
  18. java获取两个时间之间的所有日期、月份、年份,返回列表
  19. 删除icloud照片手机照片会不见吗?看完这篇你会找到答案
  20. 区块链应用的5大方向,哪些公司正在做?

热门文章

  1. django 项目中遇到的问题(持续更新中)
  2. 软引用、弱引用、虚引用
  3. 使用ActionScript实现滤镜效果
  4. MySQL的外键约束
  5. jQuery教程08-属性筛选选择器
  6. linux如何标识用户账号和组账号,linux管理用户和组
  7. java 建模_Java设计模式菜鸟系列(两)建模与观察者模式的实现
  8. 混凝土静力受压弹性模量试验计算公式_【小马建考干货】天天送检,你知道混凝土试块检测哪些性能标指吗?...
  9. python内存池机制_python的内存管理机制
  10. java .net des_DES加密解密 JAVA与.NET互通程序代码