eetcode - custom sort string(kotlin)


level - medium
[質問]
文字列と順序が指定されている場合は、その順序で文字列をソートして出力します.
[example 1]
Example:
Input: 
order = "cba"
str = "abcd"
Output: "cbad"
Explanation: 
"a", "b", "c" appear in order, so the order of "a", "b", "c" should be "c", "b", and "a". 
Since "d" does not appear in order, it can be at any position in the returned string. "dcba", "cdba", "cbda" are also valid outputs.
[解決策]
ここで注意したいのは、重複する文字列がある可能性があることです.
順序付けされていない文字列は、位置の影響を受けません.
まず、順序に表示されていない文字列を無視します.
まず、順序に対応する文字列を検索します.
ソート後は、関連しない残りの文字列を後ろに貼るだけです.
class Solution {
    fun customSortString(order: String, str: String): String {
        val sb = StringBuilder()
        val origin = StringBuilder(str)

        for(o in order) {
            while(origin.contains(o)) {
                sb.append(o)
                origin.deleteCharAt(origin.indexOf(o))
            }
        }
        
        sb.append(origin)
        return sb.toString()
    }
}