diff --git a/lcci/17.22.Word Transformer/README.md b/lcci/17.22.Word Transformer/README.md index d67998b039430..55a287302dbde 100644 --- a/lcci/17.22.Word Transformer/README.md +++ b/lcci/17.22.Word Transformer/README.md @@ -257,6 +257,58 @@ function findLadders(beginWord: string, endWord: string, wordList: string[]): st } ``` +```swift +class Solution { + private var ans: [String] = [] + private var wordList: [String] = [] + private var endWord: String = "" + private var vis: [Bool] = [] + + func findLadders(_ beginWord: String, _ endWord: String, _ wordList: [String]) -> [String] { + self.wordList = wordList + self.endWord = endWord + ans.append(beginWord) + vis = Array(repeating: false, count: wordList.count) + return dfs(beginWord) ? ans : [] + } + + private func dfs(_ s: String) -> Bool { + if s == endWord { + return true + } + for i in 0.. Bool { + if s.count != t.count { + return false + } + var cnt = 0 + for (sc, tc) in zip(s, t) { + if sc != tc { + cnt += 1 + if cnt > 1 { + return false + } + } + } + return cnt == 1 + } +} +``` + diff --git a/lcci/17.22.Word Transformer/README_EN.md b/lcci/17.22.Word Transformer/README_EN.md index bcb9e6cc583f5..6e4b7495bbe2e 100644 --- a/lcci/17.22.Word Transformer/README_EN.md +++ b/lcci/17.22.Word Transformer/README_EN.md @@ -274,6 +274,58 @@ function findLadders(beginWord: string, endWord: string, wordList: string[]): st } ``` +```swift +class Solution { + private var ans: [String] = [] + private var wordList: [String] = [] + private var endWord: String = "" + private var vis: [Bool] = [] + + func findLadders(_ beginWord: String, _ endWord: String, _ wordList: [String]) -> [String] { + self.wordList = wordList + self.endWord = endWord + ans.append(beginWord) + vis = Array(repeating: false, count: wordList.count) + return dfs(beginWord) ? ans : [] + } + + private func dfs(_ s: String) -> Bool { + if s == endWord { + return true + } + for i in 0.. Bool { + if s.count != t.count { + return false + } + var cnt = 0 + for (sc, tc) in zip(s, t) { + if sc != tc { + cnt += 1 + if cnt > 1 { + return false + } + } + } + return cnt == 1 + } +} +``` + diff --git a/lcci/17.22.Word Transformer/Solution.swift b/lcci/17.22.Word Transformer/Solution.swift new file mode 100644 index 0000000000000..e256f0b043df2 --- /dev/null +++ b/lcci/17.22.Word Transformer/Solution.swift @@ -0,0 +1,49 @@ +class Solution { + private var ans: [String] = [] + private var wordList: [String] = [] + private var endWord: String = "" + private var vis: [Bool] = [] + + func findLadders(_ beginWord: String, _ endWord: String, _ wordList: [String]) -> [String] { + self.wordList = wordList + self.endWord = endWord + ans.append(beginWord) + vis = Array(repeating: false, count: wordList.count) + return dfs(beginWord) ? ans : [] + } + + private func dfs(_ s: String) -> Bool { + if s == endWord { + return true + } + for i in 0.. Bool { + if s.count != t.count { + return false + } + var cnt = 0 + for (sc, tc) in zip(s, t) { + if sc != tc { + cnt += 1 + if cnt > 1 { + return false + } + } + } + return cnt == 1 + } +}