JavaScript'te Bir Dizeyi Ters Çevirmenin Üç Yolu

Bu makale, Ücretsiz Kod Kampı Temel Algoritma Komut Dosyası "Bir Dizeyi Ters Çevir" konusuna dayanmaktadır

Bir dizeyi ters çevirmek , görüşmenin teknik turunda en sık sorulan JavaScript sorularından biridir. Görüşmeciler sizden bir dizeyi tersine çevirmek için farklı yollar yazmanızı isteyebilir veya sizden yerleşik yöntemler kullanmadan bir dizeyi ters çevirmenizi isteyebilirler veya hatta özyineleme kullanarak bir dizgiyi tersine çevirmenizi isteyebilirler.

JavaScript'te bulunmadığından , yerleşik ters işlev hariç, bunu yapmanın potansiyel olarak onlarca farklı yolu vardır .

Aşağıda, JavaScript'te bir dizeyi ters çevirme sorununu çözmenin en ilginç üç yolu var.

Algoritma Zorluğu

Sağlanan dizeyi ters çevirin.

Diziyi tersine çevirmeden önce bir diziye dönüştürmeniz gerekebilir.

Sonucunuz bir dizge olmalıdır.

function reverseString(str) { return str; } reverseString("hello");

Sağlanan test durumları

  • reverseString ("merhaba") "olleh" olmalıdır
  • reverseString ("Howdy") "ydwoH" olmalıdır
  • reverseString ("Dünyadan Selamlar") "htraE morf sgniteerG" döndürmelidir

1. Yerleşik İşlevlerle Bir Dizeyi Ters Çevirme

Bu çözüm için üç yöntem kullanacağız: String.prototype.split () yöntemi, Array.prototype.reverse () yöntemi ve Array.prototype.join () yöntemi.

  • Split () yöntemi, dizeyi alt dizelere ayırarak bir String nesnesini bir dizi dizisine böler.
  • Reverse () yöntemi bir diziyi yerinde ters çevirir. İlk dizi öğesi son, sonuncu ise ilk olur.
  • Join () yöntemi, bir dizinin tüm öğelerini bir dizede birleştirir.
function reverseString(str) { // Step 1. Use the split() method to return a new array var splitString = str.split(""); // var splitString = "hello".split(""); // ["h", "e", "l", "l", "o"] // Step 2. Use the reverse() method to reverse the new created array var reverseArray = splitString.reverse(); // var reverseArray = ["h", "e", "l", "l", "o"].reverse(); // ["o", "l", "l", "e", "h"] // Step 3. Use the join() method to join all elements of the array into a string var joinArray = reverseArray.join(""); // var joinArray = ["o", "l", "l", "e", "h"].join(""); // "olleh" //Step 4. Return the reversed string return joinArray; // "olleh" } reverseString("hello");

Üç yöntemi birbirine zincirlemek:

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

2. Döngü İçin Azalan Bir Dizeyi Ters Çevir

function reverseString(str) { // Step 1. Create an empty string that will host the new created string var newString = ""; // Step 2. Create the FOR loop /* The starting point of the loop will be (str.length - 1) which corresponds to the last character of the string, "o" As long as i is greater than or equals 0, the loop will go on We decrement i after each iteration */ for (var i = str.length - 1; i >= 0; i--) { newString += str[i]; // or newString = newString + str[i]; } /* Here hello's length equals 5 For each iteration: i = str.length - 1 and newString = newString + str[i] First iteration: i = 5 - 1 = 4, newString = "" + "o" = "o" Second iteration: i = 4 - 1 = 3, newString = "o" + "l" = "ol" Third iteration: i = 3 - 1 = 2, newString = "ol" + "l" = "oll" Fourth iteration: i = 2 - 1 = 1, newString = "oll" + "e" = "olle" Fifth iteration: i = 1 - 1 = 0, newString = "olle" + "h" = "olleh" End of the FOR Loop*/ // Step 3. Return the reversed string return newString; // "olleh" } reverseString('hello');

Yorumsuz:

function reverseString(str) { var newString = ""; for (var i = str.length - 1; i >= 0; i--) { newString += str[i]; } return newString; } reverseString('hello');

3. Bir Dizeyi Özyinelemeyle Ters Çevirme

Bu çözüm için iki yöntem kullanacağız: String.prototype.substr () yöntemi ve String.prototype.charAt () yöntemi.

  • Substr () yöntemi, belirtilen konumda başlayan bir dizedeki karakterleri belirtilen sayıda karakterle döndürür.
"hello".substr(1); // "ello"
  • CharAt () yöntemi, bir dizeden belirtilen karakteri döndürür.
"hello".charAt(0); // "h"

Özyinelemenin derinliği String'in uzunluğuna eşittir. Bu çözüm en iyisi değildir ve String çok uzunsa ve yığın boyutu büyük önem taşıyorsa gerçekten yavaş olacaktır.

function reverseString(str) { if (str === "") // This is the terminal case that will end the recursion return ""; else return reverseString(str.substr(1)) + str.charAt(0); /* First Part of the recursion method You need to remember that you won’t have just one call, you’ll have several nested calls Each call: str === "?" reverseString(str.subst(1)) + str.charAt(0) 1st call – reverseString("Hello") will return reverseString("ello") + "h" 2nd call – reverseString("ello") will return reverseString("llo") + "e" 3rd call – reverseString("llo") will return reverseString("lo") + "l" 4th call – reverseString("lo") will return reverseString("o") + "l" 5th call – reverseString("o") will return reverseString("") + "o" Second part of the recursion method The method hits the if condition and the most highly nested call returns immediately 5th call will return reverseString("") + "o" = "o" 4th call will return reverseString("o") + "l" = "o" + "l" 3rd call will return reverseString("lo") + "l" = "o" + "l" + "l" 2nd call will return reverserString("llo") + "e" = "o" + "l" + "l" + "e" 1st call will return reverserString("ello") + "h" = "o" + "l" + "l" + "e" + "h" */ } reverseString("hello");

Yorumsuz:

function reverseString(str) { if (str === "") return ""; else return reverseString(str.substr(1)) + str.charAt(0); } reverseString("hello");

Koşullu (Üçlü) Operatör:

function reverseString(str) { return (str === '') ? '' : reverseString(str.substr(1)) + str.charAt(0); } reverseString("hello");

JavaScript'te Bir Dizeyi Tersine Çevirmek , teknik bir telefon taramasında veya teknik bir görüşmede sorulabilecek küçük ve basit bir algoritmadır. Bu problemi çözmek için kısa yoldan gidebilir ya da özyineleme veya daha karmaşık çözümlerle çözerek yaklaşımı kullanabilirsiniz.

Umarım bunu faydalı bulmuşsunuzdur. Bu, Free Code Camp Algorithm Challenges hakkındaki “FCC Algoritmaları Nasıl Çözülür?” Serisi makalelerimin bir parçası, burada birkaç çözüm öneriyorum ve başlık altında neler olduğunu adım adım açıklıyorum.

JavaScript'te bir dizeyi tekrar etmenin üç yolu

Bu makalede, freeCodeCamp'ın "Bir dizeyi tekrar et, bir dizeyi tekrar et" sorununun nasıl çözüleceğini açıklayacağım. Bu içerir…

JavaScript'te bir Dizenin sonunu doğrulamanın iki yolu

Bu makalede, freeCodeCamp'ın "Sonu Doğrulayın" sorununun nasıl çözüleceğini açıklayacağım.

JavaScript'te Bir Sayıyı Faktoriyelleştirmenin Üç Yolu

Bu makale, Ücretsiz Kod Kampı Temel Algoritma Komut Dosyası "Bir Sayıyı Faktoriyelleştirme" konusuna dayanmaktadır

JavaScript'te Palindromları Kontrol Etmenin İki Yolu

Bu makale Free Code Camp Basic Algorithm Scripting "Palindromes Kontrolü" konusuna dayanmaktadır.

JavaScript'te Bir Dizede En Uzun Kelimeyi Bulmanın Üç Yolu

Bu makale, Ücretsiz Kod Kampı Temel Algoritma Komut Dosyası "Bir Dizedeki En Uzun Kelimeyi Bul" konusuna dayanmaktadır.

JavaScript'te Bir Cümle Başlığı Başlamanın Üç Yolu

Bu makale Free Code Camp Temel Algoritma Scripting "Başlık Durumu Bir Cümle" ye dayanmaktadır.

Kendi çözümünüz veya herhangi bir öneriniz varsa, bunları aşağıdaki yorumlarda paylaşın.

Veya aşağıdaki yeşil kalbe tıkladıktan hemen sonra beni Medium , Twitter, Github ve LinkedIn'de takip edebilirsiniz ;-)

‪#‎StayCurious‬, ‪#‎KeepOnHacking‬ & ‪#‎MakeItHappen‬!

Resources

  • split() method — MDN
  • reverse() method — MDN
  • join() method — MDN
  • String.length — MDN
  • substr() method — MDN
  • charAt() method — MDN