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

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

树的建模 天然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());

}

};

相关推荐
CoderCodingNo3 小时前
【NOIP】2011真题解析 luogu-P1003 铺地毯 | GESP三、四级以上可练习
算法
iFlyCai3 小时前
C语言中的指针
c语言·数据结构·算法
查古穆3 小时前
栈-有效的括号
java·数据结构·算法
再一次等风来3 小时前
近场声全息(NAH)仿真实现:从阵列实值信号到波数域重建
算法·matlab·信号处理·近场声全息·nah
汀、人工智能3 小时前
16 - 高级特性
数据结构·算法·数据库架构·图论·16 - 高级特性
大熊背3 小时前
利用ISP离线模式进行分块LSC校正的方法
人工智能·算法·机器学习
XWalnut4 小时前
LeetCode刷题 day4
算法·leetcode·职场和发展
蒸汽求职4 小时前
机器人软件工程(Robotics SDE):特斯拉Optimus落地引发的嵌入式C++与感知算法人才抢夺战
大数据·c++·算法·职场和发展·机器人·求职招聘·ai-native
AI成长日志4 小时前
【笔面试算法学习专栏】双指针专题·简单难度两题精讲:167.两数之和II、283.移动零
学习·算法·面试
旖-旎5 小时前
分治(库存管理|||)(4)
c++·算法·leetcode·排序算法·快速选择算法