第二题,我一眼就知道是二分了,但是我***兮兮的把l=m+1,r=m-1写成了l=l+1;r=r-1;关键是列子并不能给我错误提示,害得我想了半天都写不对,气死啦

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 
     * @param x string字符串 
     * @return int整型
     */
         int check(int x,string s)
//假如x=2,字符串为aacbbcba我们只需要看字符串里面是不是含有aabbcc,
//   当然得按顺序来,显然当前字符串不满足。那么x=2,大了,缩小枚举范围
{
    int k=3*x;
    int a=0;
    int b=0;
    int c=0;
    int i=0;
while(i<s.length())
    {
        if(s[i]=='a')
            a++;
             i++;
        if(a==x)
            break;

    }
    while(i<s.length())
    {
        if(s[i]=='b')
            b++;
            i++;
        if(b==x)
            break;

    }
    while(i<s.length())
    {
        if(s[i]=='c')
           c++;
           i++;
        if(c==x)
          break;

    }
    if(a+b+c>=k)
        return 1;
  return 0;


}
    int Maximumlength(string x) {
        int n = x.size();
        int l = 0,r = n;//枚举的上下界

        while(l<=r){
            int m=(l+r)>>1;
            if(check(m,x)){

                l = m+1;//当前枚举的值满足条件,那么我们就试探着看,能不能找到更大的值
            }
            else r = m-1;//否则看小的值能不能满足
        }
        return 3*(l-1);
    }
};