Description
如果一个字符串从前向后读和从后向前读相同,则称其为 回文串。回文串是用于衡量字符串复杂度(例如字符串的不对称性)的有用因子。一个长度为 n 的字符串 S 的不对称性可以通过其 回文长度 PL(S) 来度量,即 S 能被划分成的回文子串的最小数量。更精确地说,PL(S) 是最小的整数 t (1≤t≤n),使得存在回文子串 S1,S2,…,St,它们的连接 S1S2⋯St 等于 S。为了便于区分,我们将 S 划分为 S1,S2,…,St 记作 S1∣S2∣⋯∣St。
例如,字符串 S=abaaca 可以划分成两个回文子串,即 aba∣aca,这是最小的划分,因此 PL(abaaca)=2。字符串 acaba 不能被划分成两个回文子串,但可以划分成三个回文子串,例如 S=aca∣b∣a 或 S=a∣c∣aba,因此 PL(acaba)=3。对于 S=radar,PL(S)=1,因为 S 本身就是一个回文串。而对于 S=abcde,PL(S)=5。
给定一个由英文小写字母组成的非空字符串 S,请编写一个程序输出 PL(S)。
你的程序需要从标准输入读取数据。输入的第一行包含一个正整数 n (1≤n≤100,000),其中 n 是字符串的字母数量。接下来的一行包含一个由 n 个英文小写字母组成的字符串。注意,字符串中的字母之间没有空格。
你的程序需要向标准输出写入结果。输出恰好一行。该行应包含一个正整数,即输入字符串 S 的回文长度 PL(S)。
6
abaaca
2
5
acaba
3
5
abcde
5
5
radar
1
Hint
翻译由 DeepSeek V3 完成