Leetcode - 791. Custom Sort String

숲사람·2022년 5월 15일
0

멘타트 훈련

목록 보기
25/237

문제

order로 주어지는 문자는 제시된 순서를 유지하도록 s를 sorting하기. order에 존재하지 않는 문자는 어디 위치해도 상관없음.

Input: order = "cba", s = "abcd"
Output: "cbad"

https://leetcode.com/problems/custom-sort-string/

해결

s의 문자빈도수를 table[26] 에 저장. order에 존재하는 문자를 먼저 배열에 저장. 그 뒤남은 문자를 배열에 저장.

char * customSortString(char * order, char * s){
    int table[26] = {0};
    int ssize = strlen(s);
    int osize = strlen(order);
    char *ret = malloc((ssize + 1) * sizeof(char));
    int retcnt = 0;
    
    for (int i = 0; i < ssize; i++)
        table[s[i] - 'a']++;
    for (int i = 0; i < osize; i++) {
        for (int j = 0; j < table[order[i] - 'a']; j++)
            ret[retcnt++] = order[i];
        table[order[i] - 'a'] = 0;
    }
    for (int i = 0; i < 26; i++)
        for (int j = 0; j < table[i]; j++)
            ret[retcnt++] = i + 'a';
    ret[retcnt] = '\0';
    return ret;
}
profile
기록 & 정리 아카이브용

0개의 댓글