#2921. 回文字符串(palindrome)

回文字符串(palindrome)

说明

本题必须使用文件重定向,输入文件名palindrome.in,输出文件名palindrome.out

题目描述

作为一个新手,小明刚学了回文字符串,知道了一个字符串如果关于中心对称,则该字符串为回文字符串。

于是他自己就发明了属于他自己的回文字符串,即符合以下条件的字符串SS是回文字符串:

首先把字符串SS分割成nn个子串 S1,S2,..SnS_1,S_2,.….S_n,即S1+S2+...+Sn=SS_1+S_2+...+S_n= S (其中+为字符串拼接操作)。

分割成的子串数量需要大于1,且不能为空,即n>1n >1SiS_i为非空子串。

对于所有的 i[1,n]i ∈ [1,n]有:要么SSSni+1S_{n-i+1}相等,要么SiS_iSni+1S_{n-i+1}互为回文。(补充说明:字符串AABB互为回文指AA倒过来与BB相等,反之亦然。举例说明:“abcabc”与"cbacba"互为回文。)

给定一个字符串SS,请你帮助小明确定该字符串是否是在上述规则下的回文字符串。

如果是,他还想将字符串SS分成尽可能多的子串。

输入格式

一行一个字符串S S

输出格式

如果不能满足要求,输出一行一个字符串NONO;否则,输出两行,第一行一个字符串 YESYES,第二行一个整数nn表示最大的子串数量。

样例

abcababcba
YES
8

样例1解释

最多可以把字符串分成(a)(b)(c)(ab)(ab)(c)(b)(a)共8个子串。

goodluckhavefun
NO

样例2解释

很显然不存在满足题意的分割方案。

wahacodewaha
YES
3

样例3解释

最多可以把字符串分成(waha) (code)(waha)共3个子串。

数据范围

  • 对于30%的数据,11≤ ISI10≤ 10;(其中 ISI为给定字符串的长度)
  • 对于60%的数据,11≤ISI1000 ≤1000
  • 其中有30%的数据输入的字符串为回文字符串
  • 对于100%的数据,11≤ISl10000≤10000,保证输入的字符串全为小写字母

来源

山东CSP-X2023 小学组复赛