报错于aba和abba两次count的初始设置有问题

#include <iostream>
#include <vector>
using namespace std;

int main() {
    string s;
    getline(cin, s);

    //特殊情况
    if(s.length() == 1 || (s.length() == 2 && s[0] != s[1])){
        cout << 1 << endl;
        return 0;
    }
    if(s.length() == 2 && s[0] == s[1]){
        cout << 2 << endl;
        return 0;
    }

    vector<int> bi(s.length(), 1);
    //aba型
    int left, right;
    for(int mid = 1; mid < s.length() - 1; mid++){
        left = mid - 1;
        right = mid + 1;
        int count = 1;

        while((s[left] == s[right]) && (left >= 0) && (right <= s.length() - 1)){
            count += 2;
            left --;
            right ++;
        }
        bi[mid] = count;
    }

    //abba型
    for(int mid = 1; mid < s.length() - 1; mid ++){
        if(s[mid] == s[mid + 1]){
            bi[mid] = 2 > bi[mid] ? 2 : bi[mid];

            if(mid + 2 <= s.length() - 1){
                left = mid - 1;
                right = mid + 2;
                int count = 2;

                while((s[left] == s[right]) && (left >= 0) && (right <= s.length() - 1)){
                    count += 2;
                    left --;
                    right ++;
                }

                bi[mid] = count > bi[mid] ? count : bi[mid];              
            }
        }
    }

    int max = 0;
    for(auto a : bi) max = a > max ? a : max;

    cout << max << endl;

    return 0;
}
// 64 位输出请用 printf("%lld")