给出一个字符串数组作为输入。 每个字符串是以下格式的:基于某些条件对字符串数组进行多级排序
{名字} {空格字符} {罗马数字}
阵列具有被排序第一基于所述名称,如果名字是相同的,那么上罗马数字的基础。
例如
输入 - [ “菲利普IV”, “菲利普II”, “约翰X”]
输出 - [ “约翰X”, “菲利普II”, “菲利普IV”]
另一个变体: 字符串数组包含一些重复项。数组必须根据字符串出现次数降序排列,如果两个或更多字符串的出现次数相同,则根据反向字典顺序对它们进行排序。
例如
输入 - [ “ABC”, “ABC”, “XYZ”, “XYZ”, “PQR”, “PQR”, “PQR”]
输出 - [ “PQR”, “XYZ”, “abc”]
在这里和那里的一些变化的采访中,这个问题已经出现了很多次。两者都与多级排序有关。
我只能用蛮力的方法。
对于第一个,创建一个罗马数字的排序映射,并用它来实现一个比较器,它将处理名和罗马数字。
对于第二个,创建一个字符串及其出现的映射,并用它来实现一个比较器。
有没有更好的方法来解决这些问题?任何帮助将不胜感激。
到目前为止你做了什么? –
如果我理解你对你的尝试的描述,它确实看起来像是适当的解决方案。人们可能会弄乱诸如时间复杂性(即主要用于Java集合的数据类型)和其他性能相关方面(罗马数字转换器或事件映射的多线程初始化等)等细节,但我无法真正了解只用Java框架本身就可以看到另一个简单的解决方案 – Mena
此外,问题的+1,但投票结束为“太宽泛”。 – Mena