题目描述:
题目解读:
给定回文串,问这个回文串的非空子序列中为非回文串的最大长度。
解题思路:
如果回文串内只有一种字符,那无论怎么删除,其子序列都还是回文串。
只有串中出现不同字符,其删除字符后的子序列才会出现非回文。有不同字符时,如果长度为偶,则左右随便删除一个字符即可得到子序列中最长的非回文串;如果长度为奇,则删除中点外任意一个字符,都可得非回文串。
代码实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<iostream>
using namespace std;
void Solve() {
string s;
cin >> s;
int flg = 0;
for (int i = 0; i < s.length(); i++) {
if (s[0] != s[i]) {
flg = 1;
break;
}
}
if (flg) {
printf("%d\n", s.length() - 1 );
}
else printf("-1\n");
return;
}
int main() {
int t;
scanf("%d", &t);
while (t--) Solve();
return 0;
}
遇到的错误: