• 题意:给你一个字符串,找出一个类似为\(aaabbbccc\)这样的由连续的\(abc\)构成的子序列,其中\(|a|=|b|=|c|\),问字符串中能构造出的子序列的最大长度.

  • 题解:这题刚开始一直想怎么线性扫过,结果好像没有什么思路(其实是可以预处理\(b\)的个数然后双指针的),但这题最好写的其实还是二分答案,在check的时候,因为\(a,b,c\)的长度是相同的,那么我们就直接线性找目前二分的长度\(cur\)个\(a\),然后再去找\(cur\)个\(b\),最后找\(cur\)个\(c\),如果发现\(a,b,c\)中任意一个字符有剩余,那么我们肯定是找大了,更新右区间,否则更新左区间.

  • 代码:

    class Solution {
    public:
    /**
    * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
    *
    * @param x string字符串
    * @return int整型
    */
    bool check(string s,int cur){
    int cnt1=cur,cnt2=cur,cnt3=cur,i=0;
    while(i<(int)s.size() && cnt1){
    if(s[i]=='a') cnt1--;
    i++;
    }
    while(i<(int)s.size() && cnt2){
    if(s[i]=='b') cnt2--;
    i++;
    }
    while(i<(int)s.size() && cnt3){
    if(s[i]=='c') cnt3--;
    i++;
    }
    return !(cnt1+cnt2+cnt3);
    }
    int Maximumlength(string x) {
    // write code here
    int l=0,r=(int)x.size();
    while(l<r){
    int mid=(l+r+1)>>1;
    if(check(x,mid)) l=mid;
    else r=mid-1;
    }
    return r*3;
    }
    };

最新文章

  1. 游戏启示录 关于Update的相关问题
  2. SE1-soc入手又有的东西可以玩了
  3. mysql前缀索引(字符串截取部分作为索引), 以及索引选择指引
  4. My_Plan part1 小结
  5. Windows下安装PHP扩展及资源下载地址(memcached为例)
  6. 快速解决PDF文档加密不能打印问题_百度经验
  7. Android 音视频开发(二):使用 AudioRecord 采集音频数据并保存到文件
  8. Pat1128:N Queens Puzzle
  9. 64位Win7系统nbtstat 问题
  10. express基础项目创建
  11. hdoj:2081
  12. 论文笔记:Real-Time MDNet
  13. P3397 地毯
  14. (原创)C++11改进我们的程序之简化我们的程序(三)
  15. mongoose实现批量删除和多id查询的api/方法
  16. arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf等的区别
  17. Linq to SQL 参考Demo
  18. 为什么要使用String
  19. 虚拟机安装CentOS,网络配置
  20. json字符串转化为json对象and 对象转化为 json字符串

热门文章

  1. ArrayList源码解析--值得深读
  2. SpringBoot对静态资源的映射规则
  3. ctfhub技能树—信息泄露—hg泄露
  4. 三节锂电池充电管理芯片,IC电路图如何设计
  5. C#高级编程第11版 - 第二章 索引
  6. Redis 实战 —— 09. 实现任务队列、消息拉取和文件分发
  7. __del__ PyPy和CPython的不同点 动态编译(注意不是解释) 析构函数被调用的次数
  8. (Sql Server)SQL FOR XML PATH
  9. Redis 雪崩、穿透和击穿
  10. Python中单引号,双引号,三引号的区别