剑指 Offer II 020. 回文子字符串的个数

136 阅读1分钟

剑指 Offer II 020. 回文子字符串的个数

方法一:简单粗暴,枚举法,把每一种字符串的组合都判断一遍


function checkPalindrome(s) {
  var i = 0;
  var j = s.length - 1
  while (i < j) {
    if (s[i] != s[j]) return false;
    i++;
    j--;
  }
  return true;
}
var countSubstrings = function(s) {
    var len = s.length;
    var count = 0
    for(var i =0;i<len;i++){
        for(var j = i + 1;j < len + 1;j++){
            if(checkPalindrome(s.slice(i,j))){
                count++
            }
        }
    }
    return count
};

方法二:

var countSubstrings = function (s) {
  const len = s.length;
  var res = 0;
  for (var i = 0; i < 2 * len - 1; i++) {
    var j = i / 2;
    var k = i / 2 + (i % 2);
    while (j >= 0 && k < len && s.charAt(j) == s.charAt(k)) {
      --j;
      ++k;
      ++res;
    }
  }
  return res;
};

console.log(countSubstrings('abcdedcded'));