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

网站建设发展方向有哪些/代写文章

网站建设发展方向有哪些,代写文章,网站开发培训中心,最新网站建设常见问题23-11-08每日一题:2609.最长平衡子字符串 链接:2609.最长平衡子字符串 总体思路: 平衡字符串要求“字符串前半段的0和后半段的1个数相同” > 分别记录0和1的计数结果,并最终取二者的最小值2字符串必须0开头,1结束 …

23-11-08每日一题:2609.最长平衡子字符串

  • 链接:2609.最长平衡子字符串

  • 总体思路:

    • 平衡字符串要求“字符串前半段的0和后半段的1个数相同” ==> 分别记录0和1的计数结果,并最终取二者的最小值×2
    • 字符串必须0开头,1结束 ==> 忽略s一开头的1
    • 一个字符串记录后,怎么从上个字符串结尾的1,切换到下个字符串开头的0?
  • 按普通样例“0100111”走==> 碰到’0’就给count0++,碰到‘1’就给count1++ ==> 当碰到0前面有1,就刷新一次res,并重计算count0和count1

    • ① 由于可能字符串1开头,得忽略 ==> 故“ 碰到‘1’就给count1++”就得修改成,碰到‘1’且count0≠0时
    • ② 若刷新的条件是以“碰到0前面有1”的角度,那么对于“01000111”最大的平衡字符串中“000111”之后没有0作结尾,就没法更新结果了(即只有当“0001110”时才能更新出正确答案),或者更新结果得比较繁琐 ==> 于是思考刷新的条件应修改为“1后面是0” ==> 同时由于1可能是大字符串最后一个字符,所以得并上“i+1==s.size()” ==> 故最终完善的刷新条件是 “1后面是0”或者“(i+1)=大字符串长度”
class Solution {
public:int findTheLongestBalancedSubstring(string s) {int count1=0,count0=0,res=0;for(int i=0;i<s.size();i++){if(s[i]=='0') {count0++;// cout<<' '<<i<<' '<<count1<<' '<<count0<<'\n';}else if( (count0!=0) & s[i]=='1' ){ // ①count1++;// cout<<' '<<i<<' '<<count1<<' '<<count0<<'\n';if(s[i+1]=='0'||(i+1)==s.size()){ // ②// cout<<' '<<i<<' '<<count1<<' '<<count0<<'\n';res = max(res,2*min(count0,count1));count0=0;count1=0;}}}return res;}
};
  • 学习官方类似思路 ==> 更清晰
    • 官方刷新条件是采用“碰到0前面有1”
      • 反思:没有我当初以为会繁琐,其实和“1后面碰到0更新”一样,只是其他条件也要跟着做相对的变化
      • a. 将上方中的“(i+1)=大字符串长度”,考虑作“i为0”即可;
      • b. 将s[i] == '1'作为if最初层的条件就好
    • n=s.size():把将s.size()提前提出,会快一点,不然for循环里每次都得算一遍,就慢
    • ② 每碰到“1”就更新一下res,这样即使“1”在大字符串末尾,也不担心会因为没满足“碰到0前面有1” 这个刷新条件,而错过刷新了
    • ③ 切换子字符串 – 单独拎出刷新count0和count1的情况:走到这步的前提是s[i]='0',所以else if(i==0 || s[i-1]=='1') 表明的是
      • a. 要么s[i]='0' & i==0:'0’作为大字符串开头
      • b. 要么s[i]='0' & s[i-1]=='1':'0’作为新子字符串开头
    • 比较自己和官方的思路:
      • 我是在切换子字符(即刷新count0和count1)时,一起更新结果 ==> 需要多考虑1在末尾的情况,而且期间有把自己绕晕的倾向
      • 官方思路是每次有1时,更新结果 ==> 无需考虑1在末尾的情况,但切换子字符串的逻辑要单独拎出来
class Solution {
public:int findTheLongestBalancedSubstring(string s) {int count0=0,count1=0,res=0,n=s.size()//①for(int i=0;i<n;i++){if(s[i]=='1'){count1++;res = max(res,2*min(count0,count1));//②}else if(i==0 || s[i-1]=='1') //③走到这步隐含说明s[i]='0'{   count0 = 1;count1 = 0;}else{//碰到0就计数+1count0++;}}return res;}
};
http://www.jmfq.cn/news/5337757.html

相关文章:

  • 如何建设网站pdf下载/常州seo排名收费
  • 成都哪家网站建设强/今日十大热点新闻
  • 企业的网站建设与设计论文/网推资源渠道
  • 建设网站应注意什么/新闻热点事件2021(最新)
  • 中小学网站建设探讨/seo系统源码出售
  • 重庆住房城乡建设厅官方网站/手机如何制作自己的网站
  • 深圳数码网站建设/自己如何制作网页
  • 网站建设公司douyanet/海南seo
  • 福州设计网站建设/百度公司图片
  • 英文网站建设价格/windows优化大师最新版本
  • 上饶建设培训中心网站/百度推广客服人工电话多少
  • 石柱网站建设/互联网营销渠道有哪些
  • 关于做好学院网站建设的要求/谷歌推广怎么做
  • 深圳公司网站建设案例/营销的概念是什么
  • aspsql server典型网站建设案例 源码/软文标题和内容
  • 宁波高端品牌网站建设/宣传推广计划
  • 网站建设程序结构/在线刷高质量外链
  • 深鑫辉网站建设/百度学术官网登录入口
  • 一个门户网站的建设流程/哪里有培训班
  • qq邮件网站建设的模块/惠州疫情最新情况
  • 重庆做网站建设公司哪家好/百度推广网站一年多少钱
  • 傲派电子商务网站建设总结/外贸网络营销平台
  • 聊城建设网站/软文范文
  • 北京建设委员会网站赵/投稿网
  • 昭通市建设局网站/百度客服人工电话24
  • 网站建设海外/太原seo顾问
  • 浙江汉农建设有限公司网站/智能优化大师下载
  • 安徽省建设厅门户网站/域名注册查询阿里云
  • 中国建设銀行网站投诉电话/哪个软件可以自动排名
  • 乐都网站建设哪家好/短视频赚钱app软件