Skip to main content

647. 回文子串

给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。

回文字符串 是正着读和倒过来读一样的字符串。

子字符串 是字符串中的由连续字符组成的一个序列。

具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。

示例 1

输入:s = "abc"
输出:3
解释:三个回文子串: "a", "b", "c"

示例 2

输入:s = "aaa"
输出:6
解释:6 个回文子串: "a", "a", "a", "aa", "aa", "aaa"

答案

双指针

var countSubstrings = function(s) {
let count = 0;

for (let i = 0; i < s.length; i++) {

let s1 = '';
let s2 = '';

for (let j = i; j < s.length; j++) {
// 分别按顺序和逆序累加字符串
s1 = s1 + s[j]
s2 = s[j] + s2
// 符合回文子串
if (s1 === s2) count++;
}
}

return count;
};
var s = "abc" 
// var s = "aaa"

countSubstrings(s)