Skip to content

Commit 6bee023

Browse files
authored
feat: add swift code to lcci problems: No.01.02,02.05 (doocs#2557)
1 parent 0509513 commit 6bee023

File tree

6 files changed

+176
-0
lines changed

6 files changed

+176
-0
lines changed

lcci/01.02.Check Permutation/README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,33 @@ var CheckPermutation = function (s1, s2) {
170170
};
171171
```
172172

173+
```swift
174+
class Solution {
175+
func CheckPermutation(_ s1: String, _ s2: String) -> Bool {
176+
if s1.count != s2.count {
177+
return false
178+
}
179+
180+
var cnt = Array(repeating: 0, count: 26)
181+
182+
for char in s1 {
183+
let index = Int(char.asciiValue! - Character("a").asciiValue!)
184+
cnt[index] += 1
185+
}
186+
187+
for char in s2 {
188+
let index = Int(char.asciiValue! - Character("a").asciiValue!)
189+
cnt[index] -= 1
190+
if cnt[index] < 0 {
191+
return false
192+
}
193+
}
194+
195+
return true
196+
}
197+
}
198+
```
199+
173200
<!-- tabs:end -->
174201

175202
### 方法二:排序

lcci/01.02.Check Permutation/README_EN.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,33 @@ impl Solution {
242242
}
243243
```
244244

245+
```swift
246+
class Solution {
247+
func CheckPermutation(_ s1: String, _ s2: String) -> Bool {
248+
if s1.count != s2.count {
249+
return false
250+
}
251+
252+
var cnt = Array(repeating: 0, count: 26)
253+
254+
for char in s1 {
255+
let index = Int(char.asciiValue! - Character("a").asciiValue!)
256+
cnt[index] += 1
257+
}
258+
259+
for char in s2 {
260+
let index = Int(char.asciiValue! - Character("a").asciiValue!)
261+
cnt[index] -= 1
262+
if cnt[index] < 0 {
263+
return false
264+
}
265+
}
266+
267+
return true
268+
}
269+
}
270+
```
271+
245272
<!-- tabs:end -->
246273

247274
<!-- end -->
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution {
2+
func CheckPermutation(_ s1: String, _ s2: String) -> Bool {
3+
if s1.count != s2.count {
4+
return false
5+
}
6+
7+
var cnt = Array(repeating: 0, count: 26)
8+
9+
for char in s1 {
10+
let index = Int(char.asciiValue! - Character("a").asciiValue!)
11+
cnt[index] += 1
12+
}
13+
14+
for char in s2 {
15+
let index = Int(char.asciiValue! - Character("a").asciiValue!)
16+
cnt[index] -= 1
17+
if cnt[index] < 0 {
18+
return false
19+
}
20+
}
21+
22+
return true
23+
}
24+
}

lcci/02.05.Sum Lists/README.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,40 @@ var addTwoNumbers = function (l1, l2) {
258258
};
259259
```
260260
261+
```swift
262+
/**
263+
* Definition for singly-linked list.
264+
* class ListNode {
265+
* var val: Int
266+
* var next: ListNode?
267+
* init(_ val: Int) {
268+
* self.val = val
269+
* self.next = nil
270+
* }
271+
* }
272+
*/
273+
274+
class Solution {
275+
func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
276+
var carry = 0
277+
let dummy = ListNode(0)
278+
var current: ListNode? = dummy
279+
var l1 = l1, l2 = l2
280+
281+
while l1 != nil || l2 != nil || carry != 0 {
282+
let sum = (l1?.val ?? 0) + (l2?.val ?? 0) + carry
283+
carry = sum / 10
284+
current?.next = ListNode(sum % 10)
285+
current = current?.next
286+
l1 = l1?.next
287+
l2 = l2?.next
288+
}
289+
290+
return dummy.next
291+
}
292+
}
293+
```
294+
261295
<!-- tabs:end -->
262296
263297
<!-- end -->

lcci/02.05.Sum Lists/README_EN.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,40 @@ var addTwoNumbers = function (l1, l2) {
261261
};
262262
```
263263
264+
```swift
265+
/**
266+
* Definition for singly-linked list.
267+
* class ListNode {
268+
* var val: Int
269+
* var next: ListNode?
270+
* init(_ val: Int) {
271+
* self.val = val
272+
* self.next = nil
273+
* }
274+
* }
275+
*/
276+
277+
class Solution {
278+
func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
279+
var carry = 0
280+
let dummy = ListNode(0)
281+
var current: ListNode? = dummy
282+
var l1 = l1, l2 = l2
283+
284+
while l1 != nil || l2 != nil || carry != 0 {
285+
let sum = (l1?.val ?? 0) + (l2?.val ?? 0) + carry
286+
carry = sum / 10
287+
current?.next = ListNode(sum % 10)
288+
current = current?.next
289+
l1 = l1?.next
290+
l2 = l2?.next
291+
}
292+
293+
return dummy.next
294+
}
295+
}
296+
```
297+
264298
<!-- tabs:end -->
265299
266300
<!-- end -->

lcci/02.05.Sum Lists/Solution.swift

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* public class ListNode {
4+
* public var val: Int
5+
* public var next: ListNode?
6+
* public init(_ val: Int) {
7+
* self.val = val
8+
* self.next = nil
9+
* }
10+
* }
11+
*/
12+
class Solution {
13+
func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
14+
var carry = 0
15+
let dummy = ListNode(0)
16+
var current: ListNode? = dummy
17+
var l1 = l1, l2 = l2
18+
19+
while l1 != nil || l2 != nil || carry != 0 {
20+
let sum = (l1?.val ?? 0) + (l2?.val ?? 0) + carry
21+
carry = sum / 10
22+
current?.next = ListNode(sum % 10)
23+
current = current?.next
24+
l1 = l1?.next
25+
l2 = l2?.next
26+
}
27+
28+
return dummy.next
29+
}
30+
}

0 commit comments

Comments
 (0)