を使用して、非連続的な文字列の文字のサブセットをソートするより高速な方法は何ですか私は、このJavaコードスニペットpos
で同じ値がstr
内の対応する文字がに属していることを意味しのJava:Javaの8 API
String str = "acxrabdz";
int[] pos = {1, 2, 1, 3, 4, 1, 2, 1};
を持っています同じサブセット。私は、各サブセットの文字を辞書順に降順にソートしたい。この例では、サブセット答えはString ans = "zdxrabca";
Iチュなります
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}}
ですstは中間部分集合ではなく最終文字列を取得したい。
どのようにすれば最速のJava 8アプローチを使用して、可能な場合はその場で解決できますか?
あなたの説明によると、正しい答えは 'adcrzxba'だろう。説明を更新するか、現在のアルゴリズムを表示してください。また、昇順でない=降順:) –
dasblinkenlightのコメントに基づいて、@ titanは "zdxrabca"が唯一の回答であり、 "zxbadcra"が間違っている理由を説明できますか? – Mureinik
@dasblinkenlight wrt "non-ascending" vs "descending" - 一意性の必要はありません。 「昇順ではない」とは、昇順でない順序です。文字「acb」は昇順ではないが、降順ではない。 – Mureinik