給出一個字符串數組作爲輸入。 每個字符串是以下格式的:基於某些條件對字符串數組進行多級排序
{名字} {空格字符} {羅馬數字}
陣列具有被排序第一基於所述名稱,如果名字是相同的,那麼上羅馬數字的基礎。
例如
輸入 - [ 「菲利普IV」, 「菲利普II」, 「約翰X」]
輸出 - [ 「約翰X」, 「菲利普II」, 「菲利普IV」]
另一個變體: 字符串數組包含一些重複項。數組必須根據字符串出現次數降序排列,如果兩個或更多字符串的出現次數相同,則根據反向字典順序對它們進行排序。
例如
輸入 - [ 「ABC」, 「ABC」, 「XYZ」, 「XYZ」, 「PQR」, 「PQR」, 「PQR」]
輸出 - [ 「PQR」, 「XYZ」, 「abc」]
在這裏和那裏的一些變化的採訪中,這個問題已經出現了很多次。兩者都與多級排序有關。
我只能用蠻力的方法。
對於第一個,創建一個羅馬數字的排序映射,並用它來實現一個比較器,它將處理名和羅馬數字。
對於第二個,創建一個字符串及其出現的映射,並用它來實現一個比較器。
有沒有更好的方法來解決這些問題?任何幫助將不勝感激。
到目前爲止你做了什麼? –
如果我理解你對你的嘗試的描述,它確實看起來像是適當的解決方案。人們可能會弄亂諸如時間複雜性(即主要用於Java集合的數據類型)和其他性能相關方面(羅馬數字轉換器或事件映射的多線程初始化等)等細節,但我無法真正瞭解只用Java框架本身就可以看到另一個簡單的解決方案 – Mena
此外,問題的+1,但投票結束爲「太寬泛」。 – Mena