题目要求最少得回文串
根据回文串的规律,判断回文串都能分解成
aaaabbbbb
到ab
的偶数对称型babab
到aba
的奇数对称型
以上,只需要先找偶数,再找奇数,两次循环查找最简型,因为主要有回文串,都能根据性质推到成以上两种回文串,所以对于存在回文字符串的数据,要么是2要么是3。剩下的就是-1不存在回文串。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s; cin>>s;
int n=s.size();
for(int i=0,j=i+1;i<n-1;++i)
{
if(s[i]==s[j])
{
cout << 2;
return 0;
}
if(j<n) ++j;
}
if(n>2)
{
for(int i=0,j=i+2;i<n-2;++i)
{
if(s[i]==s[j])
{
cout<<3;
return 0;
}
if(j<n) ++j;
}
}
cout<<-1;
return 0;
}