给出一个字符串数组作为输入。 每个字符串的格式如下:
{名字} {空格字符} {罗马数字}
必须首先根据名称对数组进行排序,如果名称相同,则基于罗马数字进行排序。
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"]
在这里和那里采访一些变化时,这个问题已经出现了很多次。两者都与多级排序有关。
我只能采用蛮力方法。
对于第一个,为罗马数字创建一个排序映射,并使用它来实现一个比较器,它将处理名字和罗马数字。
对于第二个,创建字符串及其出现的映射,并使用它来实现比较器。
有没有更好的方法来解决这些问题?任何帮助都将受到高度赞赏。