给定两个字符串 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 中的所有字符都 不同
public String customSortString(String order, String s) {
StringBuilder sb = new StringBuilder();
char[] array = order.toCharArray();
for (char c : array) {
int size=s.length();
s = s.replaceAll(c + "", "");
if (s.length()!=size){
for (int i = 0; i < size-s.length(); i++) {
sb.append(c);
}
}
}
sb.append(s);
return sb.toString();
}

public String customSortString(String order, String s) {
StringBuilder sb = new StringBuilder();
int[] ints = new int[26];
for (char c : s.toCharArray()) {
ints[c-'a']++;
}
for (char c : order.toCharArray()) {
while (ints[c-'a']>0){
sb.append(c);
ints[c-'a']--;
}
}
for (int i = 0; i < 26; i++) {
while (ints[i]>0){
sb.append((char)(i+'a'));
ints[i]--;
}
}
return sb.toString();
}

func customSortString(order string, s string) string {
result:=""
ints:=[26]int{}
for _, v := range s {
ints[v-'a']++
}
for _, v := range order {
for ints[v-'a']>0 {
result+=string(v)
ints[v-'a']--
}
}
for i:=0;i<26;i++{
for ints[i]>0 {
result+=string(i+'a')
ints[i]--
}
}
return result
}
