#37947: C++詳解


11131039@stu.tshs.tp.edu.tw (二孝25林孟希)

學校 : 不指定學校
編號 : 201083
來源 : [36.227.70.244]
最後登入時間 :
2024-05-22 06:16:38
c462. apcs 交錯字串 (Alternating Strings) -- apcs | From: [125.228.248.38] | 發表日期 : 2023-10-20 14:59

#include <bits/stdc++.h>
using namespace std;

int length(string s,int pos,int k){
    int accum=1;///已經累積同樣型式字元數量
    int total_length=1;///現在長度(從第一個開始判斷)
    bool is_legal=false;///是否至少有一組
    for(int i=pos;i<s.length();i++){///字串範圍內
        if(accum == k) is_legal=true;
        if(isupper(s[i])){///如果是大寫
                if(isupper(s[i+1]) && accum<k){///如果是大寫且連續還沒超過k
                    total_length++; accum++;
                }
                else if(islower(s[i+1]) && accum>=k){///如果是小寫且連續已經達到k
                    total_length++; accum=1;
                }
                else break;///否則已經不合規則
        }
        else{///如果是小寫
                if(islower(s[i+1]) && accum<k){///如果是小寫且連續還沒超過k
                    total_length++; accum++;
                }
                else if(isupper(s[i+1]) && accum>=k){///如果是大寫且連續已經達到k
                    total_length++; accum=1;
                }
                else break;///否則已經不合規則
        }
    }
    if(is_legal){
        return total_length-total_length%k;
    }
    else return 0;
}

int main(){
    int k; cin>>k;
    string s; cin>>s;
    int ans=0;
    for(int i=0;i<s.length();i++){
        //cout<<length(s,i,k)<<endl;
        ans=max(ans,length(s,i,k));
    }
    cout<<ans;
}

 
ZeroJudge Forum