zoukankan      html  css  js  c++  java
  • 牛客编程巅峰赛S2第7场

    • 题意:给你一个字符串,找出一个类似为(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;
          }
      };
      
  • 相关阅读:
    第三章 AOP
    第二章 IoC
    第一章 Spring 概述
    框架整合
    后台管理工程搭建
    技术架构
    淘淘商城简介
    电商行业背景
    前言
    FutureTask的使用
  • 原文地址:https://www.cnblogs.com/lr599909928/p/14109797.html
Copyright © 2011-2022 走看看