Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d2d77aa

Browse files
feat: add swift implementation to lcof2 problem: No.034 (doocs#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)

AltStyle によって変換されたページ (->オリジナル) /