一开始我是这样直接按题目意思直接模拟判断的
后面发现差不多只能过一半样例
之后ai了一下,发现可以判断是否字符a,h交替出现,如果是就cnt++,如果不是就重置cnt为1;

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

int main() {
    int N;
    string s;
    cin >> N >> s;  // 先读N再读字符串
    
    long long cnt = 1;  // 当前笑声长度
    long long ans = 0;
    
    // 先处理单个字符的情况
    if (N == 1) {
        if (s[0] == 'a' || s[0] == 'h') {
            cout << 1;
        } else {
            cout << 0;
        }
        return 0;
    }
    
    // 遍历查找交替的a和h
    for (int i = 1; i < N; i++) {
        // 如果当前是a或h,并且和前一个字符交替
        if ((s[i] == 'a' && s[i-1] == 'h') || (s[i] == 'h' && s[i-1] == 'a')) {
            cnt++;
        } 
        // 如果当前是a或h,但是不交替,重新开始计数
        else if (s[i] == 'a' || s[i] == 'h') {
            cnt = 1;
        } 
        // 如果不是a或h,重新开始
        else {
            cnt = 0;
        }
        ans = max(ans, cnt);
    }
    
    // 检查第一个字符
    if (s[0] == 'a' || s[0] == 'h') {
        ans = max(ans, 1LL);
    }
    
    cout << ans;
    return 0;
}