Harry and magic string

Accepts: 8
Submissions: 28
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 32768/32768 K (Java/Others)
问题描述
哈利得到一个很长的字符串T,哈利想知道这个字符串里面,不相交的回文子串有多少对?如果一个字符串a,正着读和反着读是一样的,那么我们称a为回文串。对于T的连续子串$x = T[a_1 \ldots b_1], y = T[a_2 \ldots b_2]$(其中,$a_1$为x在T中的起始位置,$b_1$为T在s中的结束位置。$a_2, b_2$相应为y在T中的起始位置和结束位置),如果有($b_1 < a_2$或者$b_2 < a_1$)且x, y都是回文串,则称x,y为T的一对不相交的回文串子串。
输入描述
多组输入数据
每组一行,包含一个长度在[1, 100000]内的字符串T,T仅由小写字母组成。
输出描述
每组输出一个整数,表示T不相交的回文子串的对数。
输入样例
aca
aaaa
输出样例
3
15

提示:
对于第一组数据,T=aca,T有4个回文子串
它们是:
S1=T[0,0]=a
S2=T[0,2]=aca
S3=T[1,1]=c
S4=T[2,2]=a
其中,不相交的有3对,它们是:
(S1,S3) (S1,S4) (S3,S4).
所以答案是3