java - 根据某些条件对字符串数组进行多级排序

标签 java arrays string sorting

给出一个字符串数组作为输入。 每个字符串的格式如下:

{名字}{空格字符}{罗马数字}

数组必须首先根据名称排序,如果名称相同,则根据罗马数字排序。

例如

输入 - [“腓力四世”、“腓力二世”、“约翰十世”]

输出 - [“约翰十世”、“腓力二世”、“腓力四世”]

另一种变体: 字符串数组包含一些重复项。该数组必须根据字符串出现的次数按降序排序,如果任何两个或多个字符串的出现次数相同,则根据它们的逆字典顺序对它们进行排序。

例如

输入 - ["abc", "abc", "xyz", "xyz", "pqr", "pqr", "pqr"]

输出 - ["pqr", "xyz", "abc"]

这个问题在采访中出现过很多次,但也有一些变化。两者都与多级排序有关。

我只能想出一种蛮力方法。

对于第一个,为罗马数字创建一个排序映射,并使用它来实现一个比较器,该比较器将处理名字,然后处理罗马数字。

对于第二个,创建一个字符串及其出现次数的映射,并使用它来实现比较器。

有没有更好的方法来解决此类问题?任何帮助将不胜感激。

最佳答案

可以先按名字排序,再按罗马字数来解决。

enter image description here

只有当您使用一种稳定的排序技术时,此方法才有效,否则当您对第二列进行排序时,它会弄乱第一列。

关于java - 根据某些条件对字符串数组进行多级排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37943276/

相关文章:

javascript - 如何从数组中检查

java - 在 Java 中为生产者/消费者模式创建同步缓冲区

java - 同步静态方法在 Java 中是如何工作的,我可以用它来加载 Hibernate 实体吗?

java - 使用BufferedOutputStream写入大量不同小文件的正确方法

string - Node.js - 如何将流转换为字符串

php - PHP 数组可以容纳不同类型的项目吗?

python - 有没有更好的方法通过将 'object' 替换为 mean 来将 'na' 类型数组转换为 numpy 数组?

java - 缺少 Spring Cloud Consul/刷新端点

python - 创建numpy数组问题(无法将输入数组从形状(2)广播到形状(1))

javascript - 如何避免重复以下替换代码?