题目
给定两个字符串 order 和 s 。order 的所有单词都是 唯一 的,并且以前按照一些自定义的顺序排序。
对 s 的字符进行置换,使其与排序的 order 相匹配。更具体地说,如果在 order 中的字符 x 出现字符 y 之前,那么在排列后的字符串中, x 也应该出现在 y 之前。
返回 满足这个性质的 s 的任意排列 。
示例
输入: order = “cba”, s = “abcd”
输出: “cbad”
解释:
“a”、“b”、“c”是按顺序出现的,所以“a”、“b”、“c”的顺序应该是“c”、“b”、“a”。
因为“d”不是按顺序出现的,所以它可以在返回的字符串中的任何位置。“dcba”、“cdba”、“cbda”也是有效的输出。
输入: order = “cbafg”, s = “abcd”
输出: “cbad”
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/custom-sort-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
方法1:模拟
Java实现
class Solution {
public String customSortString(String order, String s) {
StringBuffer res = new StringBuffer();
int[] cnts = new int[26];
for (char c : s.toCharArray()) cnts[c - 'a']++;
for (char c : order.toCharArray()) {
while (cnts[c - 'a']-- != 0) res.append(c);
}
for (int i = 0; i < cnts.length; i++) {
while(cnts[i]-- > 0) res.append((char)(i + 'a'));
}
return res.toString();
}
}

该博客讨论了一个编程问题,即如何根据给定的排序顺序对字符串进行排列。输入是两个字符串,一个是排序顺序,另一个是原始字符串。目标是将原始字符串重新排列,使得字符遵循排序顺序。提供的Java实现通过计数每个字符的出现次数并模拟排序过程来解决这个问题。输出可以是满足条件的任何有效排列。
325

被折叠的 条评论
为什么被折叠?



