leetcode:904. 水果成篮(双指针)

题目:

在这里插入图片描述

分析:

题目的意思就是说,我找最长的一段连续的字符串,该串应该满足的是最多只包含两种元素。
五指针问题吧!

代码:

 if(t.size()<=2) return t.size(); 
 int b1=0,b2=1;
 //b1 指向第一个的开始   b2 指向第二个的开始
 int e1=0,e2=1;
 //b1 指向第一个的结束   b2 指向第二个的结束 
 while(t[b2]==t[b1])
 {
  b2++;
  if(b2==t.size()) return t.size();
 }
 e1=b2-1;
 e2=b2; 
 int maxx=b2+1-e1;
 int k=b2+1;//向前移动的指针 
 while(k<t.size())
 {
  if(t[k]==t[e1]) 
  {
   maxx=max(maxx,k+1-b1);
   e1=k; 
   k++;
   continue; 
  }
  else if(t[k]==t[e2]){
   maxx=max(maxx,k+1-b1);
   e2=k;
   k++;
   continue;
  }
  if(e1<e2)
  {
   b1=e1+1;
   e1=e2;
  }
  else {
   b1=e2+1;
  }
  b2=k;
  e2=k;
  } 
 return maxx;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值