diff --git a/lcci/17.09.Get Kth Magic Number/README.md b/lcci/17.09.Get Kth Magic Number/README.md
index 7d4fe3fea6a0c..944ed740812cd 100644
--- a/lcci/17.09.Get Kth Magic Number/README.md	
+++ b/lcci/17.09.Get Kth Magic Number/README.md	
@@ -196,6 +196,32 @@ int getKthMagicNumber(int k) {
 }
 ```
 
+```swift
+class Solution {
+    private let factors = [3, 5, 7]
+
+    func getKthMagicNumber(_ k: Int) -> Int {
+        var heap: [Int] = [1]
+        var seen = Set<Int>()
+        seen.insert(1)
+
+        var value = 1
+        for _ in 1...k {
+            value = heap.removeFirst()
+            for factor in factors {
+                let nextValue = value * factor
+                if !seen.contains(nextValue) {
+                    heap.append(nextValue)
+                    seen.insert(nextValue)
+                }
+            }
+            heap.sort()
+        }
+        return value
+    }
+}
+```
+
 <!-- tabs:end -->
 
 ### 方法二:动态规划
diff --git a/lcci/17.09.Get Kth Magic Number/README_EN.md b/lcci/17.09.Get Kth Magic Number/README_EN.md
index d87bedd1fc828..fe38f0f602df7 100644
--- a/lcci/17.09.Get Kth Magic Number/README_EN.md	
+++ b/lcci/17.09.Get Kth Magic Number/README_EN.md	
@@ -191,6 +191,32 @@ int getKthMagicNumber(int k) {
 }
 ```
 
+```swift
+class Solution {
+    private let factors = [3, 5, 7]
+
+    func getKthMagicNumber(_ k: Int) -> Int {
+        var heap: [Int] = [1]
+        var seen = Set<Int>()
+        seen.insert(1)
+
+        var value = 1
+        for _ in 1...k {
+            value = heap.removeFirst()
+            for factor in factors {
+                let nextValue = value * factor
+                if !seen.contains(nextValue) {
+                    heap.append(nextValue)
+                    seen.insert(nextValue)
+                }
+            }
+            heap.sort()
+        }
+        return value
+    }
+}
+```
+
 <!-- tabs:end -->
 
 ### Solution 2
diff --git a/lcci/17.09.Get Kth Magic Number/Solution.swift b/lcci/17.09.Get Kth Magic Number/Solution.swift
new file mode 100644
index 0000000000000..9f0e427c97671
--- /dev/null
+++ b/lcci/17.09.Get Kth Magic Number/Solution.swift	
@@ -0,0 +1,23 @@
+class Solution {
+    private let factors = [3, 5, 7]
+
+    func getKthMagicNumber(_ k: Int) -> Int {
+        var heap: [Int] = [1]
+        var seen = Set<Int>()
+        seen.insert(1)
+
+        var value = 1
+        for _ in 1...k {
+            value = heap.removeFirst()
+            for factor in factors {
+                let nextValue = value * factor
+                if !seen.contains(nextValue) {
+                    heap.append(nextValue)
+                    seen.insert(nextValue)
+                }
+            }
+            heap.sort()
+        }
+        return value
+    }
+}
\ No newline at end of file