공부기록/문제풀이

[리트코드] 0715

임창록 2021. 7. 15. 15:29

https://leetcode.com/explore/challenge/card/july-leetcoding-challenge-2021/609/week-2-july-8th-july-14th/3813/

주어진 문자열을 임의의 순서(다른 문자열 order이 주어짐)로 정렬해야 하는 문제였다.

order을 보고 만든 dictionary를 이용해서 std::sort에 compare를 이용해 정렬 순서를 바꿀 수 있다.

원래 compare함수를 따로 만들고 넣어줬는데, 오류가 났다. g++로 직접 돌려보니까 오류가 나지 않아서 뭐지 싶었다.

리트코드 사이트에서 인식을 못하는 듯 해서 어떡하지 하다가 람다식을 검색해서 해봤더니 해결되었다.

class Solution {
public:
    unordered_map<char, int> dict;
    bool compare(char c1, char c2){
        return dict[c1] > dict[c2];
    }
    string customSortString(string order, string str) {
        for(int i=0; i<order.size(); i++){
            dict[order[i]] = i;
        }
        sort(str.begin(), str.end(), [&](char c1, char c2)->bool {return dict[c1]<dict[c2];});
        return str;
    }
};