非連續的字符串中的字符子集排序更快的方法我有這樣的Java代碼片斷在pos
的Java:什麼是中使用Java 8 API
String str = "acxrabdz";
int[] pos = {1, 2, 1, 3, 4, 1, 2, 1};
當值相等意味着str
相應字符屬於相同的子集。我想按字母順序降序排列每個子集中的字符。在這個例子中的子集
1: {{a, pos: 0}, {x, pos: 2}, {b, pos: 5}, {z, pos: 7}}
2: {{c, pos: 1}, {d, pos: 6}}
3: {{r, pos: 3}}
4: {{a, pos: 4}}
和有序子集
1: {{z, pos: 0}, {x, pos: 2}, {b, pos: 5}, {a, pos: 7}}
2: {{d, pos: 1}, {c, pos: 6}}
3: {{r, pos: 3}}
4: {{a, pos: 4}}
答案將是String ans = "zdxrabca";
我舉st想要獲得最終的字符串而不是中間子集。
我該如何解決使用最快的Java 8方法,如果可能的話?
根據你的解釋,正確的答案應該是'adcrzxba'。請更新解釋或顯示您當前的算法。另外,非升序=降序:) –
根據dasblinkenlight的評論,@Titan能解釋爲什麼「zdxrabca」是唯一可以接受的答案,「zxbadcra」是錯的? – Mureinik
@dasblinkenlight wrt「non-ascending」vs「descending」 - 不需要唯一性。 「不升序」是不升序的任何次序。字符「acb」以非遞減順序呈現,儘管它們絕對不是按降序排列。 – Mureinik