From db5cc3f60fe5a334aacf02886548b13bd5692a40 Mon Sep 17 00:00:00 2001 From: Lanre Adedara Date: Tue, 4 Jun 2024 07:49:29 +0100 Subject: [PATCH 1/3] feat: add swift implementation to lcof2 problem: No.027 --- .../README.md" | 49 +++++++++++++++++++ .../Solution.swift" | 44 +++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 "lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/Solution.swift" diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/README.md" index e9f6d371ff406..06fe0dc5befae 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/README.md" @@ -349,6 +349,55 @@ public class Solution { } ``` +#### Swift + +```swift +/** + * Definition for singly-linked list. + * public class ListNode { + * var val: Int + * var next: ListNode? + * init() { self.val = 0; self.next = nil; } + * init(_ val: Int) { self.val = val; self.next = nil; } + * init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; } + * } + */ + +class Solution { + func isPalindrome(_ head: ListNode?) -> Bool { + guard let head = head else { return true } + + var slow = head + var fast = head.next + while fast != nil && fast?.next != nil { + slow = slow.next! + fast = fast?.next?.next + } + + var cur = slow.next + slow.next = nil + var prev: ListNode? = nil + while cur != nil { + let nextTemp = cur?.next + cur?.next = prev + prev = cur + cur = nextTemp + } + + var left = head + var right = prev + while right != nil { + if left.val != right?.val { + return false + } + left = left.next! + right = right?.next + } + return true + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/Solution.swift" new file mode 100644 index 0000000000000..aaf46a2340730 --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/Solution.swift" @@ -0,0 +1,44 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * var val: Int + * var next: ListNode? + * init() { self.val = 0; self.next = nil; } + * init(_ val: Int) { self.val = val; self.next = nil; } + * init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; } + * } + */ + +class Solution { + func isPalindrome(_ head: ListNode?) -> Bool { + guard let head = head else { return true } + + var slow = head + var fast = head.next + while fast != nil && fast?.next != nil { + slow = slow.next! + fast = fast?.next?.next + } + + var cur = slow.next + slow.next = nil + var prev: ListNode? = nil + while cur != nil { + let nextTemp = cur?.next + cur?.next = prev + prev = cur + cur = nextTemp + } + + var left = head + var right = prev + while right != nil { + if left.val != right?.val { + return false + } + left = left.next! + right = right?.next + } + return true + } +} \ No newline at end of file From 1721fd00f218e1b2c152595dcc7f7d862e8671ab Mon Sep 17 00:00:00 2001 From: Lanre Adedara Date: Tue, 4 Jun 2024 09:46:02 +0100 Subject: [PATCH 2/3] feat: add swift implementation to lcof2 problem: No.027 --- .../README.md" | 2 +- .../Solution.swift" | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/README.md" index 06fe0dc5befae..2b6f3cd8ed90e 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/README.md" @@ -375,7 +375,7 @@ class Solution { } var cur = slow.next - slow.next = nil + var prev: ListNode? = nil while cur != nil { let nextTemp = cur?.next diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/Solution.swift" index aaf46a2340730..6cd6756db7bfd 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/Solution.swift" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/Solution.swift" @@ -21,7 +21,7 @@ class Solution { } var cur = slow.next - slow.next = nil + var prev: ListNode? = nil while cur != nil { let nextTemp = cur?.next From 654e77e6b16a652d66e6261ae0262e6dac4a49a7 Mon Sep 17 00:00:00 2001 From: klever34 Date: Tue, 4 Jun 2024 08:46:58 +0000 Subject: [PATCH 3/3] style: format code and docs with prettier --- .../README.md" | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/README.md" index 2b6f3cd8ed90e..b353bd48a407c 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250/README.md" @@ -366,14 +366,14 @@ public class Solution { class Solution { func isPalindrome(_ head: ListNode?) -> Bool { guard let head = head else { return true } - + var slow = head var fast = head.next while fast != nil && fast?.next != nil { slow = slow.next! fast = fast?.next?.next } - + var cur = slow.next var prev: ListNode? = nil @@ -383,7 +383,7 @@ class Solution { prev = cur cur = nextTemp } - + var left = head var right = prev while right != nil {