Skip to content

Commit d2d77aa

Browse files
authored
feat: add swift implementation to lcof2 problem: No.034 (#3039)
1 parent 5436b82 commit d2d77aa

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

lcof2/剑指 Offer II 034. 外星语言是否排序/README.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,40 @@ function isAlienSorted(words: string[], order: string): boolean {
199199
}
200200
```
201201

202+
#### Swift
203+
204+
```swift
205+
class Solution {
206+
func isAlienSorted(_ words: [String], _ order: String) -> Bool {
207+
var index = [Character: Int]()
208+
209+
for (i, char) in order.enumerated() {
210+
index[char] = i
211+
}
212+
213+
for i in 0..<words.count - 1 {
214+
let w1 = Array(words[i])
215+
let w2 = Array(words[i + 1])
216+
let l1 = w1.count
217+
let l2 = w2.count
218+
219+
for j in 0..<max(l1, l2) {
220+
let i1 = j >= l1 ? -1 : index[w1[j]]!
221+
let i2 = j >= l2 ? -1 : index[w2[j]]!
222+
223+
if i1 > i2 {
224+
return false
225+
}
226+
if i1 < i2 {
227+
break
228+
}
229+
}
230+
}
231+
return true
232+
}
233+
}
234+
```
235+
202236
<!-- tabs:end -->
203237

204238
<!-- solution:end -->
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution {
2+
func isAlienSorted(_ words: [String], _ order: String) -> Bool {
3+
var index = [Character: Int]()
4+
5+
for (i, char) in order.enumerated() {
6+
index[char] = i
7+
}
8+
9+
for i in 0..<words.count - 1 {
10+
let w1 = Array(words[i])
11+
let w2 = Array(words[i + 1])
12+
let l1 = w1.count
13+
let l2 = w2.count
14+
15+
for j in 0..<max(l1, l2) {
16+
let i1 = j >= l1 ? -1 : index[w1[j]]!
17+
let i2 = j >= l2 ? -1 : index[w2[j]]!
18+
19+
if i1 > i2 {
20+
return false
21+
}
22+
if i1 < i2 {
23+
break
24+
}
25+
}
26+
}
27+
return true
28+
}
29+
}

0 commit comments

Comments
 (0)