当前位置: 首页 > news >正文

leetcode 困难题 761. Special Binary String 特殊的二进制序列

Problem: leetcode 困难题 761. Special Binary String 特殊的二进制序列

解题过程

这题目的描述有问题,下面注释掉的就是递归做的,这是我的理解:第一次交换以后的字符串接着做第二次交换,接着做第三次交换,每次递归的输入长度都是最开始输入的s.size(),而不是分片以后的长度,然后拿到最大的字符串

看了官方题解,感觉和题目的描述不太相同,官方题解使用了分片,也就是找到这个字符串所有的分片然后重排合并,并不是交换一次以后继续递归

Code

class Solution { public: string makeLargestSpecial(string s) { if(s.size() <= 2) return s; int cnt = 0, left = 0; vector<string> subs; for(int i = 0; i < s.size(); i++) { if(s[i]=='1') cnt++; else { cnt--; if(cnt==0) { subs.push_back("1" + makeLargestSpecial(s.substr(left + 1, i - left - 1)) + "0"); left = i + 1; } } } sort(subs.begin(), subs.end(), greater<string>()); string tmp; for(int i = 0; i < subs.size(); i++) { tmp += subs[i]; } return tmp; } }; /* class Solution { public: string ret; bool check(string tg) { int a = 0, z = 0; for(char& c : tg) { if(c=='1') a++; else z++; if(a < z) return false; } return true; } unordered_set<string> te; string makeLargestSpecial(string s) { for(int w = 0; w < s.size(); w++) { while(w < s.size() && s[w]=='0') w++; if(w>= s.size()) continue; int a = 0, z = 0; string s1, s2, t1, t2; for(int i = w; i < s.size(); i++) { if(s[i]=='1') a++; else z++; if(a == z) { int aa = 0, zz = 0, ww = i + 1; while(ww < s.size() && s[ww]=='0') ww++; if(ww < s.size()) { for(int j = ww; j < s.size(); j++) { if(s[j]=='1') aa++; else zz++; if(aa == zz) { t1 = s1 = s.substr(w, i - w + 1); t2 = s2 = s.substr(ww, j - ww + 1); if(s1.size()!=0 && s2.size()!=0 && s1!=s2 && check(t1) && check(t2)) { string prefix, tail, mid, now, rec; prefix = s.substr(0, w); if(j+1 < s.size()) tail = s.substr(j+1); if(i+1 < ww) mid = s.substr(i+1, ww - i - 1); if(s1.size() < s2.size()) { s1 += string(s2.size()-s1.size(), '0'); } else { s2 += string(s1.size() - s2.size(), '0'); } if(s1 < s2) { now = prefix + t2 + mid + t1 + tail; if(check(now)) { ret = max(ret, now); // if(now > s) { if(te.find(ret)== te.end()) { te.insert(ret); rec = makeLargestSpecial(ret); ret = max(ret, rec); } // } } } } } } } } } } return ret.size()==0? s:ret; } }; */
http://www.cnnetsun.cn/news/167327.html

相关文章:

  • 【NWFSP问题】鳄鱼伏击算法CAOA求解零等待流水车间调度问题NWFSP【含Matlab源码 14745期】
  • 还在手动回复希音咨询?RPA+AI自动客服,效率提升30倍![特殊字符]
  • AI应用开发全景图:从LLM到Agent的硬核指南!这些大模型核心概念你必须懂
  • 揭秘Open-AutoGLM如何实现毫秒级快递轨迹更新:技术架构全解析
  • 换个角度看境外支付系统:警惕金融风险之安全测试实践
  • Home-Assistant智能家居平台搭建与远程控制
  • 盲盒小程序定制案例|轻松打造专属盲盒乐园
  • 【Open-AutoGLM快递轨迹追踪实战】:掌握AI驱动物流监控的5大核心技术
  • 【Open-AutoGLM酒店比价实战】:揭秘AI驱动的实时价格监控系统核心技术
  • requirements.txt配置踩坑实录,99%新手都会忽略的5个关键包
  • Open-AutoGLM部署效率提升10倍?你不可错过的Docker优化策略
  • 收藏!非技术党也能玩转大模型:10大行业落地指南+可复制提示词模板
  • Hugging Face下载Open-AutoGLM太慢怎么办?资深工程师推荐4种加速方案
  • 【专家级调优建议】:提升Open-AutoGLM ModelScope镜像运行效率的7种方法
  • 多进程相关函数
  • 持续集成中的测试策略:构建高效质量保障体系
  • 什么是持续集成CI,与DevOps关系
  • 结构类算法题
  • 为什么你的Open-AutoGLM部署总失败?Docker最佳实践全解析
  • Open-AutoGLM安装总失败?深度解析Python依赖树中的隐藏陷阱
  • 软件测试生命周期管理的核心框架与实践策略
  • 计算机毕设java疫情背景下大学生宿舍管理系统 基于Java的疫情环境下高校宿舍智能化管理系统开发 疫情防控期间大学生宿舍管理的Java平台构建与应用
  • 别再有线连接了!Open-AutoGLM无线调试究竟有多强大?
  • Open-AutoGLM权限困境破解,一文搞定非root环境下的完整部署流程
  • 安卓13适配倒计时,Open-AutoGLM开发者必须掌握的8项声明式权限配置技巧
  • Open-AutoGLM模型下载加速指南(仅限内部使用的CDN加速方案曝光)
  • 复盘:我们是如何将测试周期缩短50%的
  • spring16,17-加载properties文件,容器
  • 黑客和程序员谁更胜一筹?从技术实力、就业范围到赚钱潜力的全方位对比
  • 揭秘Open-AutoGLM虚拟机部署难题:99%新手都会忽略的3个关键细节