合法括号字符串|递归|树

后续可刷 树上滑窗 树上差分

树的建模 天然log递归砍半处理

dfs抽象建图后 滑窗 差分 对于跑图时间复杂度的思考

lc761

特殊二进制串拼接最大字典序

++把字符串按合法1-0平衡段拆分,每段递归处理内部后降序排序再拼接++,就是最大字典序结果

class Solution {

public:

string makeLargestSpecial(string s) {

if (s.size() <= 2) {

return s;

}

// 把 s 划分成若干段合法括号字符串,记录在 substrings 中

vector<string> substrings;

int diff = 0; // 左括号个数 - 右括号个数

int start = 0; // 子串开始下标

for (int i = 0; i < s.size(); i++) {

if (s[i] == '1') { // 左括号

diff++;

} else if (--diff == 0) { // 右括号

// 子串 [start, i] 是合法括号字符串,且无法继续划分

// 这意味着子串 [start, i] 只能是嵌套的括号,那么去掉外层的括号,递归解决 [start+1, i-1]

substrings.push_back("1" + makeLargestSpecial(s.substr(start + 1, i - start - 1)) + "0");

start = i + 1; // 下一个子串从 i+1 开始

}

}

ranges::sort(substrings, greater());

auto joined = substrings | views::join;

return string(joined.begin(), joined.end());

}

};

相关推荐
Gauss松鼠会9 小时前
【GaussDB】GaussDB 常见问题及解决方案汇总
java·数据库·算法·性能优化·gaussdb·经验总结
炽烈小老头9 小时前
【 每天学习一点算法 2026/05/19】二叉树中的最大路径和
学习·算法
人道领域9 小时前
【LeetCode刷题日记】106.从遍历序列重建二叉树:手撕递归边界,彻底搞懂左闭右闭 vs 左闭右开
java·算法·leetcode
.魚肉9 小时前
Raft 共识算法 · 演示系统(多终端)
算法·go·raft·分布式系统
念恒123069 小时前
Python(while循环)
数据结构·python·算法
神奇小汤圆9 小时前
字节面试官:你知道Claude Code的多Agent实现机制吗?
算法
运筹vivo@9 小时前
LeetCode 2540. 最小公共值
算法·leetcode·职场和发展
小许同学记录成长9 小时前
轻量正射实现原理技术文档
算法·无人机
阿文的代码库9 小时前
如何在C++中使用标准库的智能指针
开发语言·c++·算法
城事漫游Molly9 小时前
方差分析(ANOVA)入门——比较三组或更多组均值的利器
大数据·算法·均值算法·论文笔记·科研统计