Étant donné une chaîne s
, recherchez s
la 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. . .
- 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
- 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])