美文网首页
查找字符串中最长的回文

查找字符串中最长的回文

作者: drummercode | 来源:发表于2019-02-12 11:52 被阅读0次
// 暴力破解 O(n^3)
var longestPalindrome = function(s) {
    var result = []
    const sArr = s.split('')
    for(let i=0;i<sArr.length;i++){
        for(let j=0;j<sArr.length;j++){
            let tempArr = sArr.slice(i,j)
            let flag = true
            for(let k=0;k<tempArr.length/2;k++){
                if(tempArr[k] !== tempArr[tempArr.length-1-k]){
                    flag = false
                }
            }
            if(flag && tempArr.length){
                if(result.length < tempArr.length){
                    result = tempArr
                }
            }
        }
    }
    return result
};
// 中间向两边延伸O(n^2)
var longestPalindrome = function (s) {
    var result = ""
    for (let i = 0; i < s.length; i++) {
        let temp = ""
        let temp1 = isPalindrome(s, i-1, i+1)
        let temp2 = isPalindrome(s, i, i+1)
        temp = temp1.length > temp2.length ? temp1 : temp2
        if (result.length <= temp.length) {
            result = temp
        }
    }
   if (result == "") {
        return s.charAt(0)
    }
    return result

};
var isPalindrome = function (s, low, high) {
    let result = ""
    while (low >= 0 && high < s.length) {
        if (s.charAt(low) == s.charAt(high)) {
            const temp = s.substring(low, high + 1)
            if (result.length <= temp.length) {
                result = temp
            }
            low--
            high++
        }else{
            break
        }
    }
    return result
}

还可以进行优化对某些判断获得字符传进行缓存

相关文章

  • 最长回文子串

    给定一个字符串,求它的最长会问子串的长度 方法一:中心扩展 依次遍历字符串,向两边查找回文,在查找时要注意偶数回文...

  • 最长回文子串

    最长回文子串——Manacher 算法 1. 问题定义 最长回文字符串问题:给定一个字符串,求它的最长回文子串长度...

  • 字符串算法

    最长公共前缀 最长回文串 最长回文子序列 最长公共子串 反转单词顺序列 反转字符串 字符串转数字 IP-int互转

  • Manacher 算法学习笔记

    前言 给定一个字符串,求出其最长回文子串。例如:s="abcd",最长回文长度为 1;s="ababa",最长回文...

  • 寻找字符串中最长回文——Manacher算法及其Java实现(P

    题目:给一个字符串,找出最长的回文的长度(或求这个回文)。分析:寻找字符串中的回文,有特定的算法来解决,也是本文的...

  • 07-28 freeCodeCamp 算法题练习

    1.检查回文字符串 如果给定的字符串是回文,返回true,反之,返回false。 2.找出最长单词 在句子中找出最...

  • LeetCode 5.最长的回文字符串

    LeetCode 5.最长的回文字符串 原文地址给定一个字符串s,找出其中最长的回文格式的子字符串。你可以假设长度...

  • Manacher's Algorithm算法分析Java

    Manacher's Algorithm俗称马拉车算法,对于求字符串中最长回文子串效率极高。 在求最长回文子串的时...

  • Manacher算法

    最长回文子串问题# 给定一个字符串,找出最长的回文子串,如"waabwswbfd",则最长子串为bwsb. 中心试...

  • 最长回文子串问题—Manacher算法

    最长回文串问题是一个经典的算法题。 0. 问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度。如果...

网友评论

      本文标题:查找字符串中最长的回文

      本文链接:https://www.haomeiwen.com/subject/xtvheqtx.html