Сложность: medium
Дан корень дерева поиска (BST). Верните минимальную разницу между значениями любых двух различных узлов в дереве.
Пример:
Input: s = "a1b2"
Output: ["a1b2","a1B2","A1b2","A1B2"]
👨💻 Алгоритм:
1⃣Если следующий символ c является буквой, то мы удвоим все слова в нашем текущем ответе, и добавим lowercase(c) к каждому слову в первой половине, и uppercase(c) к каждому слову во второй половине.
2⃣Если c является цифрой, мы добавим его к каждому слову.
3⃣Продолжайте процесс для всех символов в строке, чтобы получить все возможные комбинации.
😎 Решение:
class Solution {
func letterCasePermutation(_ S: String) -> [String] {
var ans: [[Character]] = [[]]
for char in S {
let n = ans.count
if char.isLetter {
for i in 0..<n {
ans.append(ans[i])
ans[i].append(char.lowercased().first!)
ans[n+i].append(char.uppercased().first!)
}
} else {
for i in 0..<n {
ans[i].append(char)
}
}
}
return ans.map { String($0) }
}
}Ставь 👍 и забирай 📚 Базу знаний