基于某些条件对字符串数组进行多级排序

时间:2016-06-21 11:32:25

标签: java arrays string sorting

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

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

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

e.g。

输入 - [" Philip IV"," Philip II"," John X"]

输出 - [" John X"," Philip II"," Philip IV"]

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

e.g。

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

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

在这里和那里采访一些变化时,这个问题已经出现了很多次。两者都与多级排序有关。

我只能采用蛮力方法。

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

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

有没有更好的方法来解决这些问题?任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

它可以通过首先对名称进行排序然后对罗马计数进行排序来解决。

enter image description here

这种方法只有在你使用其中一种稳定的排序技术时才有效,否则当你对第二列进行排序时它会搞乱第一列。