Keshawn_lu's Blog

Leetcode 791. 自定义字符串排序

字数统计: 298阅读时长: 1 min
2022/11/13 Share

题目简介:

给定两个字符串 ordersorder 的所有单词都是 唯一 的,并且以前按照一些自定义的顺序排序。

s 的字符进行置换,使其与排序的 order 相匹配。更具体地说,如果在 order 中的字符 x 出现字符 y 之前,那么在排列后的字符串中, x 也应该出现在 y 之前。

返回 满足这个性质的 s 的任意排列

示例 1:

1
2
3
4
5
输入: order = "cba", s = "abcd"
输出: "cbad"
解释:
“a”、“b”、“c”是按顺序出现的,所以“a”、“b”、“c”的顺序应该是“c”、“b”、“a”。
因为“d”不是按顺序出现的,所以它可以在返回的字符串中的任何位置。“dcba”、“cdba”、“cbda”也是有效的输出。

提示:

  • 1 <= order.length <= 26
  • 1 <= s.length <= 200
  • orders 由小写英文字母组成
  • order 中的所有字符都 不同

思路:

根据字符在order中的相对位置进行排序即可

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
string customSortString(string order, string s) {

sort(s.begin(), s.end(), [&](char& c1, char& c2){

return order.find(c1) < order.find(c2);
});

return s;
}
};
CATALOG
  1. 1. 题目简介:
  2. 2. 思路:
  3. 3. 代码如下: