leetcode - isomorphic strings (kotlin)

silver·2021년 7월 14일
0

level - easy

[문제 내용]
주어진 두개의 문자열이 같은 형태로 이루어져 있는지 확인

[example 1]

Input: s = "egg", t = "add"
Output: true

[example 2]

Input: s = "foo", t = "bar"
Output: false

[example 3]

Input: s = "paper", t = "title"
Output: true

[해결 방법]
해당 문자열의 위치마다 index를 정해서
동일한 문자열이 있을 경우 같은 index로 설정하고
아니면 새로운 index를 부여하는 방식으로
위의 문제를 해결했다.

class Solution {
    fun isIsomorphic(s: String, t: String): Boolean {
        var count = 0
        val sMap = HashMap<Char, Int>() // s 문자열 index 저장
        val tMap = HashMap<Char, Int>() // t 문자열 index 저장

        var sContain = false
        var tContain = false
        for(i in s.indices) {
            if(sMap.containsKey(s[i])) {
                sContain = true
            }
            if(tMap.containsKey(t[i])) {
                tContain = true
            }

            if(sContain && tContain) {
                if(sMap[s[i]] != tMap[t[i]]) {
                    // 해당 문자열이 같은 index를 가지지 않음
                    return false
                }
            } else if(!sContain && !tContain) {
                // 새로운 index 부여
                sMap[s[i]] = count
                tMap[t[i]] = count++
            } else {
                // 해당 문자열은 누군 앞에서 나온 문자열이고 누군 새로운 문자열임
                return false
            }
        }

        return true
    }
}

0개의 댓글