3 ms·
Sorting with order arrays
- dalke 14y agoThis is done with a straight decorate-sort-undecorate (http://en.wikipedia.org/wiki/Schwartzian_transform http://en.wikipedia.org/wiki/Schwartzian_transform). In the simplest case, and in Python: "".join(sorted("ccbaba", key=lambda c: "cba".index(c))) gives "ccbbaa" as the result. The performance is a function of the query string length and the order string length, because str.index is a linear search. The obvious speedup, should the order string be extremely long, is to turn the order string into a lookup table: order = {c: i for i, c in enumerate("bca")} "".join(sorted("ccbaba", key=lambda c: order[c]))