hiho一下 第229周:Same Letters In A Row

ZMST發表於2018-11-25

題目連結:

分析:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
string s;
int k;
int a[30];
bool Judge(int i,int j,int k)
{
    int tmp=j-i+1;
    int res=0;
    for(int ii=0;ii<26;ii++)
    {
        int num=0;
        if(a[ii]>=tmp){
        for(int kk=i;kk<=j;kk++)
        {
            if(s[kk]-'a'!=ii)
                num++;
        }
       if(num<=k)
           return true;
    }
    }
        return false;
}
void solve(int n)
{
    memset(a, 0, sizeof(a));
    int len=s.size();
    for(int i=0;i<len;i++)
    {
        a[s[i]-'a']++;
    }
    int i=0;
    int j=1;
    int res=0;
    while (i<len&&j<len)
    {
        if(Judge(i, j, n)==true)
        {
            res=max(res,j-i+1);
            j++;
        }
        else
        {
            i++;
        }
    }
    cout<<res<<endl;
}
int main()
{
    while (~scanf("%d",&k))
    {
        cin>>s;
        solve(k);
    }
    return 0;
}

 

相關文章