Heim  >  Artikel  >  Web-Frontend  >  Grundlegende Javascript-Übungen: Strings umdrehen und Palindrome

Grundlegende Javascript-Übungen: Strings umdrehen und Palindrome

高洛峰
高洛峰Original
2017-02-21 14:22:241294Durchsuche

Vor kurzem, als ich studierte, stieß ich auf das Kapitel über grundlegende Algorithmen, das meine Beherrschung der integrierten Objektmethoden und der Denklogik von js verbesserte, also nutzte ich diese Gelegenheit, um meine Lernerfahrungen und eine Zusammenfassung aufzuschreiben. Der folgende Artikel stellt hauptsächlich die relevanten Informationen zur Verwendung von JavaScript zum Realisieren von Flip-Strings und Palindromen vor. Lassen Sie uns gemeinsam einen Blick darauf werfen.

Eine Zeichenfolge umkehren

Eine Zeichenfolge umkehren bedeutet, die Zeichenfolge in umgekehrter Reihenfolge zu verarbeiten, z. B. Definieren Sie eine Zeichenfolge „Hallo“ , das nach dem Umdrehen „olleh“ zurückgeben sollte.

Testfall

  1. reverseString("hello") sollte „olleh“ zurückgeben

  2. reverseString("Greetings from Earth") Sollte „htraE morf sgniteerG“ zurückgeben

Implementierungsidee

Der bequemste Weg hier ist, das zu ändern Zeichen Konvertieren Sie die Zeichenfolge in ein Array, kehren Sie dann das Array um, konvertieren Sie es in eine Zeichenfolge und geben Sie es zurück. Sie müssen die integrierten Methoden von String-Objekten und Array-Objekten verwenden:

  1. String.split()

  2. Array.reverse()

  3. Array.join()

Einzelheiten finden Sie im JavaScript-Referenzhandbuch

function reverseString(str) {
 return str.split('').reverse().join('');
}

reverseString("hello");

Das geht doch mit nur einer Retoure, das ist ganz einfach, oder? !

Lassen Sie uns auf dieser Grundlage sehen, wie das Palindrom funktioniert⬇️

Palindrom

"Madam ,I' „Das ist der erste Satz, den Adam sagte, als er Eva im Garten Eden traf. Dieser Satz liest sich in Vorwärts- und Rückwärtsrichtung genau gleich. Ein solcher Satz ist ein Palindrom, das auf Englisch Palindrom heißt.

Zum Beispiel – „Shanghais Leitungswasser kommt aus dem Meer“. Es gibt auch viele englische Wörter: Level, Madam, LOL (hahaha)…

Testfall

  1. palindrome("Race Car") sollte true zurückgeben

  2. palindrome("not a palindrome") Sollte zurückgeben false

  3. palindrome("0_0 (: /- :) 0-0") Sollte true zurückgeben

Implementierungsideen

Wir müssen eine Methode namens palindrome() schreiben und einen Parameter namens str übergeben. Wenn str ein Palindrom ist, wird es true zurückgeben, andernfalls ist es false.

Sie müssen darauf achten, Satzzeichen und Leerzeichen sowie Groß- und Kleinschreibung zu entfernen, bevor Sie ein Urteil fällen.

Sie müssen die folgenden Wissenspunkte verwenden:

  • Regulärer Ausdruck (regulärer Ausdruck), der zum Filtern von Symbolen und Leerzeichen verwendet wird

  • String.replace() Ersetzen Sie die Teilzeichenfolge, die dem regulären Ausdruck entspricht

  • String.toLowerCase() Konvertieren Sie die Zeichenfolge in Kleinbuchstaben

Über den regulären Ausdruck

Dies erfordert übereinstimmende englische Groß- und Kleinbuchstaben sowie ganze Zahlen, und alle Satzzeichen und Leerzeichen werden herausgefiltert. Sie können also /[^A-Za-z0–9]/g oder /[W_]/g

  • [^A-Z] verwenden, um alle nicht 26 Großbuchstaben zu finden

  • [^a-z] entspricht einem der 26 Kleinbuchstaben

  • [^0-9] entspricht einem beliebigen Wert von 0 bis 9. Beliebige Zahl

  • [^_] entspricht Nicht-Unterstrichen

  • ^ entspricht dem Anfang der Zeichenfolge

  • w Beachten Sie, dass es sich um Kleinbuchstaben handelt, die mit Buchstaben, Zahlen, Unterstrichen oder chinesischen Schriftzeichen übereinstimmen.

  • W Beachten Sie, dass es sich um Großbuchstaben handelt, die mit allen Zeichen übereinstimmen, die keine Buchstaben, Zahlen, Unterstriche oder chinesischen Schriftzeichen sind , entspricht [^ A-Za-z0-9_]

  • g bedeutet globale Suche

Das ist meine Methode:

function palindrome(str) {
 str = str.replace(/[\W_]/g,'').toLowerCase();
 var reverseStr = str.split('').reverse().join('');
 return str===reverseStr;
}

palindrome("eye");

Ich habe im Internet gesehen, dass es auch über eine For-Schleife umsetzbar ist:

function palindrome (str) {
 var reg = /[\W_]/g,
 regStr = str.toLowerCase().replace(reg, ''),
 len = regStr.length;

 for (var i = 0, halfLen = len / 2; i < halfLen; i++){
 if (regStr[i] !== regStr[len - 1 - i]) {
  return false;
 }
 }
 return true;
}

Diese Idee nutzt geschickt die Eigenschaften des Palindroms, schneidet die gesamte Zeichenfolge in zwei Hälften, durchläuft sie und beurteilt, ob das erste und das letzte Zeichen gleich sind.

Es gibt auch eine Implementierung mit Rekursion:

function palindrome (str) {
 // 删除字符串中不必要的字符
 var re = /[\W_]/g;
 // 将字符串变成小写字符
 var lowRegStr = str.toLowerCase().replace(re, &#39;&#39;);
 // 如果字符串lowRegStr的length长度为0时,字符串即是palindrome
 if (lowRegStr.length === 0) {
 return true;
 }

 // 如果字符串的第一个和最后一个字符不相同,那么字符串就不是palindrome
 if (lowRegStr[0] !== lowRegStr[lowRegStr.length - 1]) {
 return false;
 } else {
 return palindrome(lowRegStr.slice(1, lowRegStr.length - 1));
 }
}

Ich denke, die anderen beiden Implementierungsideen sind es Besser als meine. Es gibt so viele Tricks. Ich bin auf dem Weg zum Programmieren noch nicht sehr weit gekommen. Machen wir es Schritt für Schritt.

Machen Sie sich übrigens keine Sorgen über den Unterschied zwischen dem Umdrehen einer Zeichenfolge und einem Palindrom! „Flip the string“ gibt die Zeichenfolge nur in umgekehrter Reihenfolge zurück; beim Palindrom hingegen werden längere und komplexere Sätze angezeigt, und Sie müssen die Sätze mit herausgefilterten Leerzeichen und Satzzeichen sowie die Sätze in umgekehrter Reihenfolge vergleichen, um festzustellen, ob sie gleich sind.

Weitere Artikel zu grundlegenden JavaScript-Übungen zum Umdrehen von Strings und Palindromen finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
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