Daily LeetCode Challenge - 859. Buddy Strings

Min Young Kim·2023년 7월 3일
0

algorithm

목록 보기
185/198

Problem From.

https://leetcode.com/problems/buddy-strings/

오늘 문제는 문자 s 에서 두 문자의 순서를 바꾸어서 goal 을 만들 수 있는지 보는 문제였다.

먼저 s 와 goal 을 비교하며, 서로 다른 문자를 묶어낸다.
그리고 만약 다른 문자가 없다면 두개만 순서를 바꿔서 같은 문자가 되는지 확인하고, 만약 다른 문자의 크기가 2가 아니라면 false 를 반환한다.
마지막으로 첫번째에 나온 다른 문자와 두번째에 나온 다른 문자가 같다면 true 를 반환해준다.

class Solution {
    fun buddyStrings(s: String, goal: String): Boolean {
        
        if(s.length != goal.length) return false
        
        val diffs = s.zip(goal).filter { it.first != it.second }
        return when {
            diffs.isEmpty() -> s.groupBy { it }.map { it.value.size }.max() ?: 0 > 1
            diffs.size != 2 -> false
            else -> diffs[0].first == diffs[1].second && diffs[1].first == diffs[0].second
        }
    }
    
}
profile
길을 찾는 개발자

0개의 댓글