Given two strings s and t, determine if they are isomorphic.
Two strings s and t are isomorphic if the characters in s can be replaced to get t.
All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character, but a character may map to itself.
두 개의 문자열 s와 t가 주어지면 두 문자열이 동형인지 확인합니다.
s의 문자를 대체하여 t를 얻을 수 있으면 두 문자열 s와 t는 동형입니다.
문자의 순서를 유지하면서 모든 문자를 다른 문자로 바꿔야 합니다. 두 문자가 동일한 문자에 매핑될 수는 없지만 문자는 자체에 매핑될 수 있습니다.
Example 1:
Input: s = "egg", t = "add"
Output: true
Explanation:
The strings s and t can be made identical by:
- Mapping 'e' to 'a'.
- Mapping 'g' to 'd'.
Example 2:
Input: s = "foo", t = "bar"
Output: false
Explanation:
The strings s and t can not be made identical as 'o' needs to be mapped to both 'a' and 'r'.
Example 3:
Input: s = "paper", t = "title"
Output: true
Constraints:
- 1 <= s.length <= 5 * 104
- t.length == s.length
- s and t consist of any valid ascii character.
코드 1
class Solution {
fun isIsomorphic(s: String, t: String): Boolean {
// if (s.length != t.length) return false
val mapS = HashMap<Char, Char>()
val mapT = HashMap<Char, Char>()
for (i in s.indices) {
if ((s[i] in mapS && mapS[s[i]] != t[i]) ||
(t[i] in mapT && mapT[t[i]] != s[i])
) {
return false
}
mapS[s[i]] = t[i]
mapT[t[i]] = s[i]
}
return true
}
}
코드 2
class Solution {
fun isIsomorphic(s: String, t: String): Boolean {
// if (s.length != t.length) return false
val hm = HashMap<Char, Char>()
for (i in s.indices) {
if (s[i] !in hm.keys) {
if (t[i] in hm.values) return false
hm[s[i]] = t[i]
} else if (hm[s[i]] != t[i]) {
return false
}
}
return true
}
}
'LeetCode > Array & Hashing' 카테고리의 다른 글
[LeetCode][Kotlin] 1624. Largest Substring Between Two Equal Characters (0) | 2024.10.18 |
---|---|
[LeetCode][Kotlin] 929. Unique Email Addresses (0) | 2024.10.18 |
[LeetCode][Kotlin] 14. Longest Common Prefix (0) | 2024.10.18 |