★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9745441.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
Given two strings s and t, determine if they are isomorphic.
Two strings 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.
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
Note:
You may assume both s and t have the same length.
给定两个字符串 s 和 t,判断它们是否是同构的。
如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。
所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。
示例 1:
输入: s ="egg",t ="add"输出: true
示例 2:
输入: s ="foo",t ="bar"输出: false
示例 3:
输入: s ="paper",t ="title"输出: true
说明:
你可以假设 s 和 t 具有相同的长度。
28ms
1 class Solution {
2 func isIsomorphic(_ s: String, _ t: String) -> Bool {
3 let s = Array(s)
4 let t = Array(t)
5
6 var dict: [Character: Character] = [:]
7
8 for i in 0..<s.count {
9 if let cache = dict[s[i]] {
10 if cache != t[i] {
11 return false
12 }
13 } else if dict.values.contains(t[i]) {
14 return false
15 } else {
16 dict[s[i]] = t[i]
17 }
18 }
19
20 return true
21 }
22 } 28ms
1 class Solution {
2 func isIsomorphic(_ s: String, _ t: String) -> Bool {
3 guard s.count == t.count else {
4 return false
5 }
6
7 var map: [Character: Character] = [:]
8 var set: Set<Character> = []
9 var charsS = Array(s)
10 var charsT = Array(t)
11 for index in 0..<s.count {
12 let charS = charsS[index]
13 let charT = charsT[index]
14 if let char = map[charS] {
15 if char != charT {
16 return false
17 }
18 } else {
19 if set.contains(charT) {
20 return false
21 }
22
23 map[charS] = charT
24 set.insert(charT)
25 }
26 }
27
28 return true
29 }
30 } 32ms
1 class Solution {
2 func isIsomorphic(_ s: String, _ t: String) -> Bool {
3 let s = Array(s)
4 let t = Array(t)
5 if s.count != t.count { return false }
6
7 var isoMap1 = [Character:Character]()
8 var isoMap2 = [Character:Character]()
9
10 var index = 0
11
12 while index < s.count {
13
14 let c1 = s[index]
15 let c2 = t[index]
16
17 if let saved = isoMap1[c1] {
18 if saved != c2 {
19 return false
20 }
21 } else {
22 isoMap1[c1] = c2
23 }
24
25 if let saved = isoMap2[c2] {
26 if saved != c1 {
27 return false
28 }
29 } else {
30 isoMap2[c2] = c1
31 }
32 index += 1
33 }
34 return true
35 }
36 } 36ms
1 class Solution {
2 func isIsomorphic(_ s: String, _ t: String) -> Bool {
3 var m1 = [Int](repeating: 0, count: 256)
4 var m2 = [Int](repeating: 0, count: 256)
5 var s = Array(s)
6 var t = Array(t)
7
8 for i in 0..<s.count {
9 let sAscii = Int(s[i].unicodeScalars.first?.value ?? 0)
10 let tAscii = Int(t[i].unicodeScalars.first?.value ?? 0)
11 if m1[sAscii] != m2[tAscii] {
12 return false
13 }
14 m1[sAscii] = i + 1
15 m2[tAscii] = i + 1
16 }
17
18 return true
19 }
20 } 44ms
1 class Solution {
2 func isIsomorphic(_ s: String, _ t: String) -> Bool {
3 var s0 = Array(s)
4 var t0 = Array(t)
5 var dic = [Character : Character]()
6
7
8 for i in 0..<s0.count {
9 let s1 = s0[i]
10 let t1 = t0[i]
11 if let tmp = dic[s1] {
12 if tmp == t1 {
13 continue
14 }else {
15 return false
16 }
17 }else {
18 if dic.values.contains(t1) {
19 return false
20 }
21 dic[s1] = t1
22 }
23 }
24
25 return true
26 }
27 } 52ms
1 class Solution {
2 func isIsomorphic(_ s: String, _ t: String) -> Bool {
3 var mapS = [Character:Character]()
4 var mapT = [Character:Character]()
5 for idx in 0 ..< s.count {
6 let cs = s[String.Index.init(encodedOffset: idx)]
7 let ct = t[String.Index.init(encodedOffset: idx)]
8
9 if let c = mapT[ct] {
10 if c != cs {
11 return false
12 }
13 } else {
14 mapT[ct] = cs
15 }
16
17 if let c = mapS[cs] {
18 if c != ct {
19 return false
20 }
21 } else {
22 mapS[cs] = ct
23 }
24 }
25 return true
26 }
27 }
转载于:https://www.cnblogs.com/strengthen/p/9745441.html
