S
Swift | LeetCode
@easy_swift_task1.4K подп.
101просмотров
7.1%от подписчиков
20 марта 2026 г.
statsScore: 111
Задача: 761. Special Binary String Сложность: hard Специальные двоичные строки - это двоичные строки, обладающие следующими двумя свойствами: количество 0 равно количеству 1. Каждый префикс двоичной строки имеет не меньше 1, чем 0. Вам дана специальная двоичная строка s. Ход состоит в выборе двух последовательных, непустых специальных подстрок s и их обмене. Две строки являются последовательными, если последний символ первой строки находится ровно на один индекс раньше первого символа второй строки. Верните лексикографически наибольшую результирующую строку, возможную после применения указанных операций над строкой. Пример: Input: s = "11011000" Output: "11100100" 👨‍💻 Алгоритм: 1⃣Определите, что специальная двоичная строка можно разбить на несколько специальных подстрок. 2⃣Рекурсивно примените к каждой подстроке этот алгоритм, чтобы найти лексикографически наибольшую строку. 3⃣Сортируйте полученные подстроки в лексикографическом порядке по убыванию и объединяйте их. 😎 Решение: func makeLargestSpecial(_ s: String) -> String { var count = 0, i = 0 var substrs = String let sArray = Array(s) for (j, char) in sArray.enumerated() { count += char == "1" ? 1 : -1 if count == 0 { let substring = String(sArray[i + 1..<j]) substrs.append("1" + makeLargestSpecial(substring) + "0") i = j + 1 } } return substrs.sorted(by: >).joined() } Ставь 👍 и забирай 📚 Базу знаний
101
просмотров
1472
символов
Да
эмодзи
Нет
медиа

Другие посты @easy_swift_task

Все посты канала →
Задача: 761. Special Binary String Сложность: hard Специальн — @easy_swift_task | PostSniper