解题思路
把握解题重点,以 string 中的每一个字符为中心,向两边扩展,检查是否满足回文字符串 同时,拓展的时候分两种情况,一种是奇数类型的回文字符串,比如 abcbc,一种是偶数类型的回文字符串,比如 aabb,要同时去匹配这两种情况
// 拿到左右指针,然后假如左右指针相等,那么满足回文字符串的要求,继续拓展,直到不一致
const expand = (left, right, s) => {
let ret = 0;
while (left >= 0 && right < s.length && s[left] === s[right]) {
ret ++;
left --;
right ++;
}
return ret;
}
const countSubstrings = function(s) {
let ret = 0;
for (let i = 0; i < s.length; i++) {
// 这里也是解题的重点,即上面所有的要满足奇偶两种情况的回文串,所以起始点:奇数情况,已自身为起点,偶数的话
// 就是已自身和后面一位为起点
ret += expand(i, i, s);
ret += expand(i, i + 1, s);
}
return ret;
};