
Sponsored
Sponsored
This approach involves counting the occurrence of each character in string s and then constructing the result string by iterating through characters in order, followed by any characters in s that do not appear in order. This ensures the output string follows the custom order defined.
Time Complexity: O(n + m), where n is the length of s and m is the length of order, since we iterate through each character of both strings.
Space Complexity: O(1), only a fixed extra space for the frequency array is used.
1#include <stdio.h>
2#include <string.h>
3
4char* customSortString(char* order, char* s) {
5 int freq[26] = {0};
6 for (int i = 0; s[i]; i++) {
7 freq[s[i] - 'a']++;
8 }
9
10 int idx = 0;
11 static char result[201];
12 for (int i = 0; order[i]; i++) {
13 while (freq[order[i] - 'a']-- > 0) {
14 result[idx++] = order[i];
15 }
16 }
17
18 for (int i = 0; i < 26; i++) {
19 while (freq[i]-- > 0) {
20 result[idx++] = 'a' + i;
21 }
22 }
23
24 result[idx] = '\0';
25 return result;
26}
27
28int main() {
29 char order[] = "cba";
30 char s[] = "abcd";
31 printf("%s\n", customSortString(order, s));
32 return 0;
33}The solution uses a frequency array to count occurrences of characters in string s. Next, it iterates through the custom order string order to construct part of the result by taking corresponding characters from s. Finally, any leftover characters from s are added to the result in their natural order.
This approach involves sorting the string s using a custom comparator function derived from the order string. You respect the sequence provided in order and sort the characters of s accordingly.
Time Complexity: O(n log n), due to the sorting operation.
Space Complexity: O(1) for map usage and additional space for sort function.
1def customSortString(order: str
In this Python solution, a dictionary assigns each character in order a priority value. Using the sorted() function with a custom key, the string s is reordered according to the priorities.