Сложность: medium
Дан корень дерева поиска (BST). Верните минимальную разницу между значениями любых двух различных узлов в дереве.
Пример:
Input: s = "a1b2"
Output: ["a1b2","a1B2","A1b2","A1B2"]
👨💻 Алгоритм:
1⃣Если следующий символ c является буквой, то мы удвоим все слова в нашем текущем ответе, и добавим lowercase(c) к каждому слову в первой половине, и uppercase(c) к каждому слову во второй половине.
2⃣Если c является цифрой, мы добавим его к каждому слову.
3⃣Продолжайте процесс для всех символов в строке, чтобы получить все возможные комбинации.
😎 Решение:
public class Solution {
public IList<string> LetterCasePermutation(string S) {
var ans = new List<List<char>> { new List<char>() };
foreach (var c in S) {
int n = ans.Count;
if (char.IsLetter(c)) {
for (int i = 0; i < n; i++) {
var current = new List<char>(ans[i]);
ans.Add(current);
ans[i].Add(char.ToLower(c));
ans[n + i].Add(char.ToUpper(c));
}
} else {
for (int i = 0; i < n; i++) {
ans[i].Add(c);
}
}
}
return ans.Select(list => new string(list.ToArray())).ToList();
}
}Ставь 👍 и забирай 📚 Базу знаний