From 44e5a871ea99ae4c54c47c795e70f3d1d7044d70 Mon Sep 17 00:00:00 2001 From: Lanre Adedara Date: Tue, 21 May 2024 07:10:50 +0100 Subject: [PATCH] Swift Implementation for LCOF 12 --- .../README.md" | 60 +++++++++++++++++++ .../Solution.swift" | 55 +++++++++++++++++ 2 files changed, 115 insertions(+) create mode 100644 "lcof/\351\235\242\350\257\225\351\242\23012. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204/Solution.swift" diff --git "a/lcof/\351\235\242\350\257\225\351\242\23012. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204/README.md" "b/lcof/\351\235\242\350\257\225\351\242\23012. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204/README.md" index f664835e0af45..b17d31b163096 100644 --- "a/lcof/\351\235\242\350\257\225\351\242\23012. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204/README.md" +++ "b/lcof/\351\235\242\350\257\225\351\242\23012. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204/README.md" @@ -366,6 +366,66 @@ public class Solution { } ``` +#### Swift + +```swift +class Solution { + private var board: [[Character]] + private var word: String + private var m: Int + private var n: Int + + init() { + self.board = [] + self.word = "" + self.m = 0 + self.n = 0 + } + + func exist(_ board: [[Character]], _ word: String) -> Bool { + self.board = board + self.word = word + m = board.count + n = board[0].count + + for i in 0.. Bool { + if k == word.count { + return true + } + if i < 0 || i >= m || j < 0 || j >= n || board[i][j] != word[word.index(word.startIndex, offsetBy: k)] { + return false + } + + let temp = board[i][j] + board[i][j] = " " + let dirs = [-1, 0, 1, 0, -1] + var ans = false + + for l in 0..<4 { + let ni = i + dirs[l] + let nj = j + dirs[l + 1] + if dfs(ni, nj, k + 1) { + ans = true + break + } + } + + board[i][j] = temp + return ans + } +} +``` + diff --git "a/lcof/\351\235\242\350\257\225\351\242\23012. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204/Solution.swift" "b/lcof/\351\235\242\350\257\225\351\242\23012. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204/Solution.swift" new file mode 100644 index 0000000000000..b0f3ef5fba206 --- /dev/null +++ "b/lcof/\351\235\242\350\257\225\351\242\23012. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204/Solution.swift" @@ -0,0 +1,55 @@ +class Solution { + private var board: [[Character]] + private var word: String + private var m: Int + private var n: Int + + init() { + self.board = [] + self.word = "" + self.m = 0 + self.n = 0 + } + + func exist(_ board: [[Character]], _ word: String) -> Bool { + self.board = board + self.word = word + m = board.count + n = board[0].count + + for i in 0.. Bool { + if k == word.count { + return true + } + if i < 0 || i >= m || j < 0 || j >= n || board[i][j] != word[word.index(word.startIndex, offsetBy: k)] { + return false + } + + let temp = board[i][j] + board[i][j] = " " + let dirs = [-1, 0, 1, 0, -1] + var ans = false + + for l in 0..<4 { + let ni = i + dirs[l] + let nj = j + dirs[l + 1] + if dfs(ni, nj, k + 1) { + ans = true + break + } + } + + board[i][j] = temp + return ans + } +}