Le contenu de cet article explique comment juger les chaînes palindromes en JavaScript (exemple d'analyse). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Paindromes (Palindromes), en chinois cela signifie que les lectures vers l'arrière et vers l'avant sont les mêmes, symétriques, comme « L'eau du robinet de Shanghai vient de la mer » en anglais Cela fait référence à ; des mots identiques vus de face et de dos, comme « madame », quant aux nombres, ils sont aussi appelés palindromes, qui font référence à un nombre symétrique comme « 16461 », c'est-à-dire que les chiffres de ce nombre sont dans l'ordre inverse. Le numéro obtenu après réorganisation de la commande est le même que le numéro d'origine.
Jugez la chaîne donnée. Si la chaîne est un palindrome, renvoyez true
, sinon renvoyez false
.
function Palindromes(str) { let reg = /[\W_]/g; // \w 匹配所有字母和数字以及下划线; \W与之相反; [\W_] 表示匹配下划线或者所有非字母非数字中的任意一个;/g全局匹配 let newStr = str.replace(reg, '').toLowerCase(); let reverseStr = newStr.split('').reverse().join('') return reverseStr === newStr; // 与 newStr 对比 }
En fait, il existe ici de nombreuses étapes d'opérations sur les tableaux, la conversion des caractères en tableaux, le retournement des tableaux, puis conversion en chaînes Les performances ici ne sont donc pas très bonnes non plus. On pense que le tableau est un type de référence. Pour modifier le tableau, un nouvel espace d'adressage de tas doit être ouvert.
function Palindromes(str) { let reg = /[\W_]/g; let newStr = str.replace(reg, '').toLowerCase(); for(let i = 0, len = Math.floor(newStr.length / 2); i < len; i++) { if(newStr[i] !== newStr[newStr.length - 1 - i]) return false; } return true; }
Méthode d'écriture 2
function Palindromes(str) { let reg = /[\W_]/g; let newStr = str.replace(reg, '').toLowerCase(); let len = newStr.length; for(let i = 0, j = len - 1; i < j; i++, j--) { // i < j console.log('---'); if(newStr[i] !== newStr[j]) return false; } return true; }
function palin(str) { let reg = /[\W_]/g; let newStr = str.replace(reg, '').toLowerCase(); let len = newStr.length; while(len >= 1) { console.log('--') if(newStr[0] != newStr[len - 1]) { // len = 0; // 为了终止 while 循环 否则会陷入死循环 return false; } else { return palin(newStr.slice(1, len - 1)); // 截掉收尾字符 再次比较收尾字符是否相等 // 直到字符串剩下一个字符(奇数项)或者 0 个字符(偶数项) } } return true; }
Définissez un indicateur de variable. Lorsque la paire de caractères des deux côtés s'avère différente pour la première fois, vous pouvez continuer à comparer ; si des différences sont trouvées dans les comparaisons ultérieures, le résultat sera renvoyé immédiatement.
Recommandations associées :function palin(str) { let flag = false; // 第一次不同可允许 let len = str.length; for(let [i, j] = [0, len - 1]; i < j; i++, j--) { if(str[i] !== str[j]) { if(flag) { return false; } // 第一次发现不同时,让右边-1 或左边+1判断相不相等 // 这时候若相等可继续 否则直接返回结果 false if(str[i++] == str[j]) { i++; flag = true; } else if (str[i] == str[j--]) { j--; flag = true; } else { return false; } } } return true; } palin('abaacaaa'); palin('aabsdjdbaa'); palin('ab')
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!