首页 > 试题广场 >

最多的回文

[编程题]最多的回文
  • 热度指数:1130 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个字符串s,问该字符串里有多少个长度大于1的连续子串都是回文?
回文:正序的文本内容与倒序的文本内容相同,比如 aa,aba

输入描述:
字符串s,1<=length(s)<=100000


输出描述:
一个整数,该字符串内部有多少个连续子串都是回文
示例1

输入

a

输出

0

说明

没有长度大于1的回文
示例2

输入

abbcbb

输出

4

说明

解释:bb,bbcbb,  bcb, bb
#牛客405350751号的python实现
s=input()
count=0
for i in range(len(s)):
    k=i-1
    r=i+1
    while(k>=0 and r<=len(s)-1 and s[k]==s[r]):   #以当前字符为对称轴向左右扩展
        count=count+1
        k=k-1
        r=r+1
    k=i
    r=i+1
    while(k>=0 and r<=len(s)-1 and s[k]==s[r]):  #以两个字符的中间对称轴
        count=count+1
        k=k-1
        r=r+1
print(count)
     

发表于 2021-05-17 18:36:38 回复(0)