Heim > Web-Frontend > js-Tutorial > Hauptteil

So ermitteln Sie die Palindrom-Zeichenfolge in Javascript (Beispielanalyse)

不言
Freigeben: 2018-09-01 12:00:08
Original
2760 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit der Beurteilung von Palindrom-Strings in JavaScript (Beispielanalyse). Ich hoffe, dass er für Sie hilfreich ist.

Paindrome (Palindrome), auf Chinesisch bedeutet es, dass die Rückwärts- und Vorwärtslesungen gleich und symmetrisch sind, wie zum Beispiel „Shanghai-Leitungswasser kommt aus dem Meer“; auf Englisch bezieht es sich auf Wörter, die von vorne und von hinten gesehen gleich sind, wie zum Beispiel „Frau“; Zahlen werden auch Palindrome genannt, die sich auf eine symmetrische Zahl wie „16461“ beziehen, d. h. die Ziffern dieser Zahl sind in umgekehrter Reihenfolge . Die nach der Neuordnung der Bestellung erhaltene Nummer ist dieselbe wie die ursprüngliche Nummer.

Problembeschreibung

Beurteilen Sie die angegebene Zeichenfolge. Wenn es sich bei der Zeichenfolge um ein Palindrom handelt, geben Sie true zurück, andernfalls geben Sie false zurück.

Implementierungsmethode

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 对比
}
Nach dem Login kopieren

Eigentlich werden hier viele Schritte von Array-Operationen durchgeführt, Zeichen in Arrays umwandeln, Arrays umdrehen und dann Strings konvertieren Auch hier ist die Leistung nicht so toll. Es wird angenommen, dass es sich bei dem Array um einen Referenztyp handelt. Um das Array zu ändern, muss ein neuer Heap-Adressraum geöffnet werden.

2. for-Schleife

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;
}
Nach dem Login kopieren
  • Schreibmethode 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;
}
Nach dem Login kopieren

3. Rekursion

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;
}
Nach dem Login kopieren

geben die Frage Weitere Anforderung hinzufügen

Für eine bestimmte Zeichenfolge können Sie höchstens ein Zeichen löschen, um festzustellen, ob es sich immer noch um ein Palindrom handelt.

Setzen Sie ein Variablen-Flag, wenn festgestellt wird, dass das Zeichenpaar auf beiden Seiten zum ersten Mal unterschiedlich ist. Wenn bei nachfolgenden Vergleichen Unterschiede festgestellt werden, wird das Ergebnis sofort zurückgegeben.

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')
Nach dem Login kopieren

Verwandte Empfehlungen:

PHP ermittelt, ob eine Zeichenfolge eine Palindromzeichenfolge ist

JavaScript-Suchzeichenfolge und Suchergebnisse in eine Zeichenfolge zurückgeben method_javascript Tips

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie die Palindrom-Zeichenfolge in Javascript (Beispielanalyse). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage