给出一个字符串数组作为输入。 每个字符串的格式如下:
{名字}{空格字符}{罗马数字}
数组必须首先根据名称排序,如果名称相同,则根据罗马数字排序。
例如
输入 - [“腓力四世”、“腓力二世”、“约翰十世”]
输出 - [“约翰十世”、“腓力二世”、“腓力四世”]
另一种变体: 字符串数组包含一些重复项。该数组必须根据字符串出现的次数按降序排序,如果任何两个或多个字符串的出现次数相同,则根据它们的逆字典顺序对它们进行排序。
例如
输入 - ["abc", "abc", "xyz", "xyz", "pqr", "pqr", "pqr"]
输出 - ["pqr", "xyz", "abc"]
这个问题在采访中出现过很多次,但也有一些变化。两者都与多级排序有关。
我只能想出一种蛮力方法。
对于第一个,为罗马数字创建一个排序映射,并使用它来实现一个比较器,该比较器将处理名字,然后处理罗马数字。
对于第二个,创建一个字符串及其出现次数的映射,并使用它来实现比较器。
有没有更好的方法来解决此类问题?任何帮助将不胜感激。
最佳答案
关于java - 根据某些条件对字符串数组进行多级排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37943276/