题目要求最少得回文串
根据回文串的规律,判断回文串都能分解成

  • aaaabbbbbab偶数对称型
  • babababa奇数对称型

以上,只需要先找偶数,再找奇数,两次循环查找最简型,因为主要有回文串,都能根据性质推到成以上两种回文串,所以对于存在回文字符串的数据,要么是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;
}