Maison > interface Web > js tutoriel > le corps du texte

Comment déterminer la chaîne palindrome en javascript (exemple d'analyse)

不言
Libérer: 2018-09-01 12:00:08
original
2759 Les gens l'ont consulté

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.

Description du problème

Jugez la chaîne donnée. Si la chaîne est un palindrome, renvoyez true, sinon renvoyez false.

Méthode d'implémentation

1. reverse()

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 对比
}
Copier après la connexion

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.

2. boucle for

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;
}
Copier après la connexion
  • Méthode d'écriture 2

function Palindromes(str) {
    let reg = /[\W_]/g;
    let newStr = str.replace(reg, &#39;&#39;).toLowerCase();
    let len = newStr.length;
    for(let i = 0, j = len - 1; i < j; i++, j--) { // i < j
        console.log(&#39;---&#39;);
        if(newStr[i] !== newStr[j]) return false;
    }
    return true;
}
Copier après la connexion

3. 🎜 >

Ajouter une autre exigence à la question
function palin(str) {
    let reg = /[\W_]/g;
    let newStr = str.replace(reg, &#39;&#39;).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;
}
Copier après la connexion

Pour une chaîne donnée, vous pouvez supprimer au plus un caractère pour déterminer s'il s'agit toujours d'un palindrome.

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')
Copier après la connexion


PHP détermine si une chaîne est une chaîne palindrome


Méthode JavaScript pour rechercher une chaîne et renvoyer les résultats de la recherche dans une chaîne_javascript conseils

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal