공부기록/문제풀이
[리트코드] 0715
임창록
2021. 7. 15. 15:29
주어진 문자열을 임의의 순서(다른 문자열 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;
}
};