본문 바로가기
Algorithm/LeetCode

[005]Sort Characters By Frequency

by BAYABA 2020. 5. 26.

 

문제: https://leetcode.com/explore/challenge/card/may-leetcoding-challenge/537/week-4-may-22nd-may-28th/3337/


아스키 코드 갯수만큼 배열은 선언한 뒤 나타난 알파벳 개수를 카운트해줍니다.

그 후에 <나타난 횟수, 알파벳> 이렇게 pair로 묶어서 vector에 넣고 내림차순 정렬한 뒤에 출력해주었습니다.

class Solution {
public:
    
    int used[128];
    vector<pair<int,int>> v;
    string frequencySort(string s) {
        memset(used,0,sizeof(used));
        for (int i = 0; i < s.size(); ++i) {
            int idx = s[i];
            used[idx] +=1;
        }
        
        for (int i = 0; i < 128; ++i) {
            if (used[i]) {
                v.push_back(make_pair(-used[i],i));
            }
        }
        
        sort(v.begin(), v.end());
        string ret = "";
        
        for (pair<int,int> pii : v) {
            int loop = -pii.first;
            for (int i = 0; i < loop; ++i) {
                char c = pii.second;
                ret += c;
            }
        }
        
        return ret;
    }
};

'Algorithm > LeetCode' 카테고리의 다른 글

[007]Add and Search Word - Data structure design  (0) 2020.08.06
[006]Valid Palindrome  (0) 2020.08.03
[004]Jewels and Stones  (0) 2020.05.17
[003]First Bad Version  (0) 2020.05.16
[002]Single Number  (0) 2020.05.10