最长回文子串

  • 判断是否是回文字符串
function isPalin(a) {
    if(a.length < 2) {
        return true;
    }
    var odd = a.length % 2 == 0;
    if(odd) {
        for(var i = 0; i < a.length / 2; i++) {
            if(a[i] != a[a.length - i - 1]) {
                return false;
            }
        }
    }
    else {
        for(var i = 0; i < a.length / 2; i++) {
            if(a[i] != a[a.length - i - 1]) {
                return false;
            }
        }
    }

    return true;
}
  • 获取所有可能子串
function getAllSubStr(a) {
  var result = [];
  var cnt = 1;
  while(cnt <= a.length) {
    for(var i = 0; i < a.length; i++) {
      if((i + cnt <= a.length) && result.indexOf(a.slice(i, i + cnt)) < 0) {
        result.push(a.slice(i, i + cnt));
      }
    }
    cnt++;
  }
  return result;
}
  • 获取所有回文子串
function getAllPalin(a) {
    var result = [];
    var tmp = getAllSubStr(a);
    for(var i = 0; i < tmp.length; i++) {
        if(isPalin(tmp[i])) {
            result.push(tmp[i]);
        }
    }
    return result;
}
  • 进阶

你可能感兴趣的:(最长回文子串)