JS Likou classic 100 questions - la sous-chaîne palindrome la plus longue

 Étant donné une chaîne s, recherchez sla sous-chaîne palindromique la plus longue de .

Exemple 1:

Entrée : s = "babad"
Sortie : "bab"
Explication : "aba" est aussi la réponse à la question.

Exemple 2 :

Entrée : s = "cbbd"
Sortie : "bb"

indice:

    1 <= s.length <= 1000
    s se compose uniquement de chiffres et de lettres

Cette question ne peut vraiment pas être résolue sans examiner l'idée. . .

  1. comprendre le sens de la question
    • Titre Étant donné une chaîne
    • Nous devons trouver le palindrome le plus long de cette chaîne
    • Palindrome : une chaîne qui lit la même chose en avant et en arrière
  2. toute l'idée
    • Je résous le problème en me basant sur une idée fondamentale du palindrome : étendre du point central aux deux côtés pour trouver la chaîne du palindrome. Cette direction équivaut à énumérer chaque point comme point central.
    • Si la chaîne du palindrome est impaire, comme "bab", son point central n'a qu'un seul "a", donc il s'étend de "a" aux deux côtés.
    • Si la chaîne du palindrome est paire, comme "baab", son point central a deux "aa", donc elle s'étend de "aa" des deux côtés.
    • Écrivez une fonction auxiliaire pour trouver la chaîne palindrome, appelez la fonction auxiliaire lorsque le point central est déterminé et renvoyez directement la chaîne palindrome trouvée
    • Comparez la chaîne palindrome trouvée à chaque fois avec la précédente, et gardez celle qui est la plus longue
/**
 * @param {string} s
 * @return {string}
 */
var longestPalindrome = function(s) {
    let str = ""
    for(let i=0; i<s.length; i++){//abba
        //穷举中心点
        let subString1 = findHuiWen(s,i,i)
        let subString2 = findHuiWen(s,i,i+1)
        str = str.length > subString1.length ? str : subString1
        str = str.length > subString2.length ? str : subString2
    }
    return str
};
function findHuiWen(s, left, right){
    while(left >=0 && right < s.length) {
        if(s.charAt(left) == s.charAt(right)) {
            left--
            right++
        } else {
            break
        }
    }//执行结束left和right都回退一个,但是substring方法左闭右开[,),因此right保持不变
    return s.substring(left+1,right)
}

Points de connaissances utilisés :

String.prototype.charAt()

 La méthode charAt() renvoie le caractère spécifié à partir d'une chaîne.

str.charAt(index)

String.prototype.substring()

substring()La méthode renvoie un sous-ensemble d'une chaîne entre l'index de début et l'index de fin, ou un sous-ensemble de l'index de début jusqu'à la fin de la chaîne.

str.substring(indexStart[, indexEnd])

Je suppose que tu aimes

Origine blog.csdn.net/qq_36384657/article/details/128209457
conseillé
Classement