LC 791. 自定义字符串排序 (opens new window) (opens new window)
中等
# 问题描述
给定两个字符串 order
和 s
。order
的所有单词都是 唯一 的,并且以前按照一些自定义的顺序排序。
对 s
的字符进行置换,使其与排序的 order
相匹配。更具体地说,如果在 order
中的字符 x
出现字符 y
之前,那么在排列后的字符串中, x 也应该出现在 y 之前。
返回 满足这个性质的 s
的任意排列 。
示例 1:
输入: order = "cba", s = "abcd"
输出: "cbad"
解释:
“a”、“b”、“c”是按顺序出现的,所以“a”、“b”、“c”的顺序应该是“c”、“b”、“a”。
因为“d”不是按顺序出现的,所以它可以在返回的字符串中的任何位置。“dcba”、“cdba”、“cbda”也是有效的输出。
示例 2:
输入: order = "cbafg", s = "abcd"
输出: "cbad"
提示:
1 <= order.length <= 26
1 <= s.length <= 200
order
和s
由小写英文字母组成order
中的所有字符都 不同
# 自定义排序
按照 的顺序重新映射新的字典序,再按照新的字典序对字符串进行排序即可。
/**
* @param {string} order
* @param {string} s
* @return {string}
*/
var customSortString = function (order, s) {
const arr = new Array(26).fill(26)
for (let i = 0; i < order.length; i++) {
arr[order.charCodeAt(i) - 97] = i
}
return s
.split('')
.sort((a, b) => arr[a.charCodeAt() - 97] - arr[b.charCodeAt() - 97])
.join('')
}
- 时间复杂度:
- 空间复杂度:
上次更新: 2023/01/31 19:48:05
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 , 转载请注明出处!