当前位置: 首页 > 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.mmbaike.com/news/22140.html

相关文章:

  • 如何给一个网站做优化百度一下马上知道
  • 大良用户网站建设大数据营销的概念
  • 前端和后端适合什么人轻松seo优化排名 快排
  • 篮球网站设计磁力引擎
  • 泉州做网站qzxiaolv樱花12e56
  • php网站开发是学什么的英文网站seo发展前景
  • 做网站能用ai好还是ps有道搜索引擎入口
  • 如何建设彩票私人网站黄页网络的推广网站有哪些
  • 长图片生成器在线制作平台优化是指什么
  • 公司招聘网站续费申请站内seo的技巧
  • 什么叫动漫设计与制作seo点击排名源码
  • wordpress 域名插件seo推广哪家服务好
  • 网站维护 关站 seoseo自然排名关键词来源的优缺点
  • wordpress会员支付系统郑州百度seo关键词
  • 如何在网站标题加logo广告平台网
  • 一个网站怎么做后台软文推广系统
  • a网站建设软文广告范文
  • 网站开发与设计的实训场地google登录
  • 住房和城乡建设部网站建造师佛山百度关键词排名
  • 网站点击推广太原seo网络优化招聘网
  • 有专业做网站优化的吗崇左网站建设
  • 成都市四方建设工程监理有限公司网站合肥网站关键词优化公司
  • Python用数据库做网站白百度一下你就知道
  • 杭州智能模板建站广告推广费用一般多少
  • 北辰正方建设集团有限公司官方网站seo搜索优化
  • 怎么做网页制作网站模板如何创建网站的快捷方式
  • 那些外贸网站个人可以做武汉最新消息今天
  • 万户网络销售windows优化大师收费
  • 新疆网站设计淘宝指数官网入口
  • 做设计在哪个网站接单一个网站如何推广