leetcode - custom sort string(kotlin)

silver·2021년 7월 15일
0

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()
    }
}

0개의 댓글