天天看點

LeetCode:791. 自定義字元串排序

字元串

S

和 

T

 隻包含小寫字元。在

S

中,所有字元隻會出現一次。

S

 已經根據某種規則進行了排序。我們要根據

S

中的字元順序對

T

進行排序。更具體地說,如果

S

x

y

之前出現,那麼傳回的字元串中

x

也應出現在

y

之前。

傳回任意一種符合條件的字元串

T

示例:
輸入:
S = "cba"
T = "abcd"
輸出: "cbad"
解釋: 
S中出現了字元 "a", "b", "c", 是以 "a", "b", "c" 的順序應該是 "c", "b", "a". 
由于 "d" 沒有在S中出現, 它可以放在T的任意位置. "dcba", "cdba", "cbda" 都是合法的輸出。
      

注意:

  • S

    的最大長度為

    26

    ,其中沒有重複的字元。
  • T

    的最大長度為

    200

  • S

    T

    隻包含小寫字元。
class Solution {
public:
    string customSortString(string S, string T) {
        string res = "";
        map<char, int>mp;
        for(auto c: T) mp[c]+=1;
        for(auto c: S){
            res += string(mp[c], c);  //mp[c]個 c
            mp[c] = 0;
        }
        for(auto a:mp){
            res += string(a.second, a.first);
        }
        return res;
    }
};