---
# System prepended metadata

title: 791. Custom Sort String
tags: ['791', leetcode, medium]

---



# 791. Custom Sort String
###### tags: `leetcode` `791` `medium` 

## :memo:  Question
![](https://i.imgur.com/bLBuwPd.png)

## :memo: 題意
* 兩個 string，一個是 order，一個是 str，然後你的 str 要跟著 order 的順序排，如果沒有出現在 order 裡的字可以再任意位置。

## :memo: leetcode solution
* :medal: **思考一**: 先用 str 找出要排序的字母有多少個，放在 hash table 裡。
* :medal: **思考二**: 然後再將 order str for loop 一遍，然後去 hash table 找要多少個這個字，然後相乘加到要回傳的字串裡，然後將此字重 hash table 裡刪掉。
* :medal: **思考二**: 最後在 for loop hash table 裡剩下的字，加到要回傳的的答案裡。



## :memo: my solution code
```python=
class Solution:
    def customSortString(self, order: str, str: str) -> str:
        
        
        dic = collections.Counter(str)
        
        ans = ""
        
        for char in order:
            ans += dic[char] * char
            del dic[char]
            
        for k, v in dic.items():
            ans += k*v
        
        
        
        return ans
    
```

## :memo: BigO
* 時間複雜度: O(n)。
* 空間複雜度: O(n)。 