아스키 코드 갯수만큼 배열은 선언한 뒤 나타난 알파벳 개수를 카운트해줍니다.
그 후에 <나타난 횟수, 알파벳> 이렇게 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 |