报错于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")