首页 > 试题广场 >

最多的回文

[编程题]最多的回文
  • 热度指数: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
let str =readline()
let len = str.length
let dp = new Array(len).fill(0).map(()=>new Array(len).fill(true))
let count = 0
for(let i = len - 1;i>= 0;i--) {
    for(let j = i+1;j < len;j++) {
        dp[i][j] = str[i] == str[j] && dp[i+1][j-1]
     }
}
// console.log(dp);
for(let i = 0;i<len;i++) {
    for(let j = i+1;j<len;j++) {
        if(dp[i][j]) {
            count++
        }
    }
}
console.log(count);
发表于 2021-07-08 21:57:22 回复(0)