Back to February Back to Year 2026
HARD 20 Feb 2026 View on LeetCode

761. Special Binary String

</> Solution

/**
 * Problem: LeetCode 761 - Special Binary String
 * Difficulty: Hard
 * Language: Java
 * Author: CodeByTushu
 */
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

class Solution {
    public String makeLargestSpecial(String s) {
        if (s.length() <= 2) {
            return s;
        }

        List<String> list = new ArrayList<>();
        int count = 0;
        int start = 0;

        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == '1') {
                count++;
            } else {
                count--;
            }

            if (count == 0) {
                // Primitive special substring found: s[start ... i]
                // The inner substring is s[start + 1 ... i - 1]
                String inner = makeLargestSpecial(s.substring(start + 1, i));
                list.add("1" + inner + "0");
                start = i + 1;
            }
        }

        Collections.sort(list, Collections.reverseOrder());

        StringBuilder sb = new StringBuilder();
        for (String sub : list) {
            sb.append(sub);
        }

        return sb.toString();
    }
}

TIME COMPLEXITY

O(n^2 log n)

SPACE COMPLEXITY

O(n)

TOPICS

Recursion Sorting String